在Java中格式化小数位

Tyr*_*ick 0 java double formatting decimal

我想在Java中将double格式化为2位小数.

我已经阅读了以下帖子: 如何在Java中将数字舍入到n个小数位

出于某种原因,这些方法中的每一种都无法处理我拥有的某些数字.

例如:

DecimalFormat df = new DecimalFormat("#.##");
normalizedValue = Double.valueOf(df.format(normalizedValue));
Run Code Online (Sandbox Code Playgroud)

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

-78.64000000000001

18.97

59.469999999999985

-63.120000000000005
Run Code Online (Sandbox Code Playgroud)

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

所以,这些方法似乎是圆的,但我需要的东西将删除2位小数后的所有小数...任何建议?

谢谢.

How*_*ard 5

给出的字符串表示DecimalFormat.format(...)确实在您的示例中只有2位数.但是一旦你将它重新转换为双精度,就会出现准确性问题.当您尝试表示"exakt"小数部分时,像double这样的二进制基本格式将始终显示此类效果.你可以改为BigDecimal去除这种效果.