小数点以下の任意の桁での四捨五入には、BigDecimalクラスの setScale() を使うのが簡単です。
使用方法
まず、BigDecimalオブジェクトを生成します。
今回は変換対象値として「1.2938」を使います。
2 | 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(); |
サンプルソース
2 | BigDecimal bigDecimal = new BigDecimal(String.valueOf(val)); |
6 | double v1 = bigDecimal.setScale( 1 , RoundingMode.CEILING).doubleValue(); |
9 | double v2 = bigDecimal.setScale( 1 , RoundingMode.FLOOR).doubleValue(); |
12 | double v3 = bigDecimal.setScale( 0 , RoundingMode.HALF_UP).doubleValue(); |
15 | double v4 = bigDecimal.setScale( 1 , RoundingMode.HALF_UP).doubleValue(); |
上記コードを実行すると、各変数には次の値が格納されます。
v1:1.3
v2:1.2
v3:1.0
v4:1.3
関連があると思われる記事:
[`google_buzz` not found]
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`grow` not found]