Home > Java > [Java] 小数の切り捨て、切り上げ、四捨五入

[Java] 小数の切り捨て、切り上げ、四捨五入

小数点以下の任意の桁での四捨五入には、BigDecimalクラスの setScale() を使うのが簡単です。
 

使用方法

まず、BigDecimalオブジェクトを生成します。
今回は変換対象値として「1.2938」を使います。

    double val = 1.2938;
    BigDecimal bigDecimal = new BigDecimal(String.valueOf(val));

 

生成されたオブジェクトの setScale() で任意の四捨五入処理を実行します。
第1引数に処理対象小数桁、第2引数に処理モードを指定します。

第1引数に指定する値は、0が小数第1位、1が小数第2位を表します。以降も同様で指定数値が「指定数値+1」の小数桁を表します。

第2引数の処理モードにはRoundingMode列挙型定数のいずれかの値を指定します。
定数値およびその意味は次のとおりです。

定数値 内容
CEILING 切り上げ(正の無限大に近づくように丸める)
DOWN 切り捨て(0に近づくように丸める)
FLOOR 切り捨て(負の無限大に近づくように丸める)
HALF_DOWN 五捨六入(もっとも近い数字に丸める)
HALF_EVEN 偶数の場合はHALF_DOWN、奇数の場合はHALF_UPのように動作する
(もっとも近い数字に丸める)
HALF_UP 四捨五入(もっとも近い数字に丸める)
UNNECESSARY 何もしない(丸めが必要でないことを表す)
UP 切り上げ(0から離れるように丸める)

 

BigDecimal#setScale() の返り値はBigDecimalオブジェクトなので、doubleValue() でデータを取り出します。
こんな感じで使用します。

    //==== 小数第2位で切り上げ ====//
    double v1 = bigDecimal.setScale(1, RoundingMode.CEILING).doubleValue();

 

サンプルソース

    double val = 1.2938;
    BigDecimal bigDecimal = new BigDecimal(String.valueOf(val));


    //==== 小数第2位で切り上げ ====//
    double v1 = bigDecimal.setScale(1, RoundingMode.CEILING).doubleValue();

    //==== 小数第2位で切り捨て ====//
    double v2 = bigDecimal.setScale(1,  RoundingMode.FLOOR).doubleValue();

    //==== 小数第1位で四捨五入 ====//
    double v3 = bigDecimal.setScale(0, RoundingMode.HALF_UP).doubleValue();

    //==== 小数第2位で四捨五入 ====//
    double v4 = bigDecimal.setScale(1, RoundingMode.HALF_UP).doubleValue();

 
上記コードを実行すると、各変数には次の値が格納されます。

v1:1.3
v2:1.2
v3:1.0
v4:1.3

 
 

関連があると思われる記事:

このエントリーをはてなブックマークに追加
はてなブックマーク - [Java] 小数の切り捨て、切り上げ、四捨五入
Facebook にシェア
[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]
[`grow` not found]

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://gacken.com/wp/program/java/1710/trackback/
Listed below are links to weblogs that reference
[Java] 小数の切り捨て、切り上げ、四捨五入 from ミライニトドケ

Home > Java > [Java] 小数の切り捨て、切り上げ、四捨五入

Search
Feeds
Meta
人気の記事

Return to page top