2017년 7월 20일 목요일

四捨五入・切上げ・切捨てをする

import java.math.BigDecimal;

public class RoundSample {

    public static void main(String args[]) {

        //元データ
        double val = 42.195;

        //元データをBigDecimal型にする
        BigDecimal bd = new BigDecimal(val);

        //四捨五入する
        BigDecimal bd1 = bd.setScale(0, BigDecimal.ROUND_HALF_UP);  //小数第1位
        BigDecimal bd2 = bd.setScale(1, BigDecimal.ROUND_HALF_UP);  //小数第2位

        //切り捨てする
        BigDecimal bd3 = bd.setScale(0, BigDecimal.ROUND_DOWN);  //小数第1位
        BigDecimal bd4 = bd.setScale(1, BigDecimal.ROUND_DOWN);  //小数第2位

        //切り上げする
        BigDecimal bd5 = bd.setScale(0, BigDecimal.ROUND_UP);  //小数第1位
        BigDecimal bd6 = bd.setScale(1, BigDecimal.ROUND_UP);  //小数第2位

        //画面表示
        System.out.println("四捨五入(小数第1位):" + bd1.doubleValue());
        System.out.println("四捨五入(小数第2位):" + bd2.doubleValue());

        System.out.println("切捨て(小数第1位):" + bd3.doubleValue());
        System.out.println("切捨て(小数第2位):" + bd4.doubleValue());

        System.out.println("切上げ(小数第1位):" + bd5.doubleValue());
        System.out.println("切上げ(小数第2位):" + bd6.doubleValue());

    }

}

Output
C:\>java RoundSample
四捨五入(小数第1位):42.0
四捨五入(小数第2位):42.2
切捨て(小数第1位):42.0
切捨て(小数第2位):42.1
切上げ(小数第1位):43.0
切上げ(小数第2位):42.2

丸めの種類

四捨五入や切り捨て、切り上げ含めて以下のような丸め方法が用意されています。
【丸め方法に関するBigDecimalクラスの定数】
丸め方法説明
ROUND_CEILING正の無限大に近づくように丸めるモード
(例)42.1→43.0、-42.1→-42.0
ROUND_DOWNゼロに近づくように丸めるモード
(例)42.1→42.0、-42.1→-42.0
ROUND_FLOOR負の無限大に近づくように丸めるモード
(例)42.1→42.0、-42.1→-43.0
ROUND_HALF_DOWN五捨六入する
(例)42.5→42.0、42.6→43.0、
 -42.5→-42.0、-42.6→-43.0
ROUND_HALF_EVEN末尾が偶数のほうに丸める
(例)42.4→42.0、42.5→42.0、
 43.4→43.0、43.5→44.0、
 -42.4→-42.0、-42.5→-42.0、
 -43.4→-43.0、-43.5→-44.0
ROUND_HALF_UP四捨五入する
(例)42.4→42.0、42.5→43.0、
 -42.4→-42.0、-42.5→-43.0
ROUND_UNNECESSARY丸め不要
ROUND_UP0 から離れるように丸めるモード
(例)42.1→43.0、-42.1→-43.0
例はすべて小数第1位を対象としています。

댓글 없음:

댓글 쓰기