J2SE の API を目的別に調べることができる辞典

ホーム > Java(SE) API 逆引き辞典 > 数値・数学 > 小数点第2位以下で四捨五入する

Java(SE) API 逆引き辞典

:: reverse dictionary ::

数値・数学

※ソースファイルについて

◎各マークの意味
Pbpubic Prprotected Sstatic


小数点第2位以下で四捨五入する

小数点第2位以下で四捨五入するには、BigDecimal クラスの setScale メソッドを使います。

≪宣言≫

import java.math.BigDecimal;
double dbl = 0.4925;

BigDecimal bd = new BigDecimal(String.valueOf(dbl));
double scale1 = bd.setScale(1, BigDecimal.ROUND_HALF_UP)
                  .doubleValue();
double scale2 = bd.setScale(2, BigDecimal.ROUND_HALF_UP)
                  .doubleValue();
double scale3 = bd.setScale(3, BigDecimal.ROUND_HALF_UP)
                  .doubleValue();

ソースファイル

scale10.5scale20.49scale30.493 になります。

▼ メソッド

java.math.BigDecimal
Pb BigDecimal setScale(int s)
Pb BigDecimal setScale(int s, int m)

スケール s で対象の BigDecimal の値を丸めます。 丸めモード m に切捨てや四捨五入の定数を指定することにより、丸め方を変更できます。

指定できる丸めモードは、次のとおりです。

丸めモード 動作
ROUND_CEILING 正の無限大に近づくように丸める
ROUND_DOWN 0 に近づくように丸める
ROUND_FLOOR 負の無限大に近づくように丸める
ROUND_HALF_DOWN 「もっとも近い数字」に丸める(五捨六入)
ROUND_HALF_EVEN 「もっとも近い数字」に丸める
(奇数:ROUND_HALF_UP、偶数:ROUND_HALF_DOWN
ROUND_HALF_UP 「もっとも近い数字」に丸める(四捨五入)
ROUND_UNNECESSARY 丸めなし
ROUND_UP 0 から離れるように丸める

六つの小数をスケール1で丸めた例を挙げておきます。

丸めモード 0.04 0.05 0.06 -0.04 -0.05 -0.06
ROUND_CEILING 0.1 0.1 0.1 0.0 0.0 0.0
ROUND_DOWN 0.0 0.0 0.0 0.0 0.0 0.0
ROUND_FLOOR 0.0 0.0 0.0 -0.1 -0.1 -0.1
ROUND_HALF_DOWN 0.0 0.0 0.1 0.0 0.0 -0.1
ROUND_HALF_EVEN 0.0 0.0 0.1 0.0 0.0 -0.1
ROUND_HALF_UP 0.0 0.1 0.1 0.0 -0.1 -0.1
ROUND_UP 0.1 0.1 0.1 -0.1 -0.1 -0.1
●引数

s … 返される BigDecimal の値のスケール(小数点の位)
m … 適用する丸めモード

●戻り値

スケール s と丸めモード m で丸めた BigDecimal

●例外
ArithmeticException
(1) スケール s が負の場合
(2) 丸めモード mROUND_UNNECESSARY を指定して丸めが必要な場合
IllegalArgumentException
丸めモード m に無効な値を指定した場合

▼ 参考

BigDecimal クラスのコンストラクタに double 型の変数をそのまま指定してしまうと、違った値になる場合があります。

double dbl = 0.6;

BigDecimal bd = new BigDecimal(dbl);
String strdbl = bd.toString();

ソースファイル

strdbl0.59999999999999997779553950749686919152736663818359375 になります。

これは、double 型の変数(浮動小数点数)を IEEE 754 という規格で表しているからです。 IEEE 754 では、10進小数を2進数で表現するため、このような誤差が発生してしまいます。

double 型の変数は文字列に変換することで、この誤差をなくすことができます。 よって、double 型の変数を指定する場合は、文字列に変換してからコンストラクタに指定するようにします。

double dbl = 0.6;

BigDecimal bd = new BigDecimal(String.valueOf(dbl));
String strdbl = bd.toString();

ソースファイル

strdbl0.6 になります。

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

数値・数学 - number & mathematics -


ホーム > Java(SE) API 逆引き辞典 > 数値・数学 > 小数点第2位以下で四捨五入する

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com