2011-12-26 45 views
0

我想在Java中将一个double格式化为2个小数位。在Java中格式化小数位

我读过下面的帖子: How to round a number to n decimal places in Java

出于某种原因,这些方法的每一个未能上的特定号码我有工作..

例如:

DecimalFormat df = new DecimalFormat("#.##"); 
normalizedValue = Double.valueOf(df.format(normalizedValue)); 

如果我打印normalizedValue我收到类似以下内容的结果:

-78.64000000000001 

18.97 

59.469999999999985 

-63.120000000000005 

(注意:有些格式正确...有些不是)

因此,这些方法似乎轮了,但我需要的东西,将删除小数点后2位的所有小数......任何建议?

谢谢。

回答

5

DecimalFormat.format(...)给出的字符串表示在您的示例中确实只有2位数字。但只要您将它重新转换成双精度问题,就会发生。当您尝试表示“exakt”小数点时,像double这样的二进制基本格式将始终显示此类效果。您可以更改为BigDecimal以摆脱此类影响。