web-dev-qa-db-ja.com

JavaのString.format( "%。2f"、doubleValue)での丸めを防止します

String.format("%.2f", doubleValue);を単に切り捨てるのではなく、丸める(切り上げアルゴリズム)のを防ぐにはどうすればよいですか?

例えば.

doubleValue = 123.459

フォーマット後、

doubleValue = 123.46

最後の桁を破棄したいだけです、

123.45

これを行うには他の方法があることを知っています。String.formatを使用してこれが可能かどうかを知りたいだけです。

13
setzamora

丸めモードはいつでも設定できます。

http://Java.Sun.com/javase/6/docs/api/Java/math/RoundingMode.html

次に、String.Format()を使用します。デフォルトではHALF_EVENが使用されますが、CEILINGに変更できます。

もう1つのそれほど柔軟なアプローチはありません(しかし、これはあなたが尋ねたものではありません):

DecimalFormat df = new DecimalFormat("###.##");
df.format(123.459);
16
DmitryK

答えは大きな太ったNOのようです。 http://Java.Sun.com/javase/6/docs/api/Java/util/Formatter.html#dndec "次に、値は切り上げハーフアップアルゴリズムを使用して切り上げられます"

NumberFormatterではRoundingModeを設定できるので、彼らがそうするのは奇妙だと思います。しかし、あなたが言うように、それを行う他の方法があります。明らかに最も簡単なのは、最初に値から.005を引くことです。

8
andersonbd1
doubleValue = 123.459
doubleValue = Math.ceil(doubleValue*100)/100;
4
Alex Rodrigues