- 2012-09-02 (日) 22:58
- 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
関連があると思われる記事:
- [Android] ページ内でのListView区切り線表示
- [Java] 経過日数の取得
- [Android] アプリケーション名とアイコン
- [Java] 乱数
- [Android] ボタンの見た目をカスタマイズ
Comments:0
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 ミライニトドケ