用Java格式化小数点
在Java中,我试图将双精度格式设置为只有2位小数 我读过以下帖子: 由于某种原因,这些方法中的每一种都无法对我掌握的某些数字起作用 例如:用Java格式化小数点,java,formatting,double,decimal,Java,Formatting,Double,Decimal,在Java中,我试图将双精度格式设置为只有2位小数 我读过以下帖子: 由于某种原因,这些方法中的每一种都无法对我掌握的某些数字起作用 例如: DecimalFormat df = new DecimalFormat("#.##"); normalizedValue = Double.valueOf(df.format(normalizedValue)); 如果我打印normalizedValue,我会得到与以下类似的结果: -78.64000000000001 18.97 59.4699
DecimalFormat df = new DecimalFormat("#.##");
normalizedValue = Double.valueOf(df.format(normalizedValue));
如果我打印normalizedValue
,我会得到与以下类似的结果:
-78.64000000000001
18.97
59.469999999999985
-63.120000000000005
(注意:有些格式正确,有些格式不正确)
所以,这些方法似乎是四舍五入的,但我需要一些东西,将删除小数点后2位的所有小数。。。有什么建议吗
谢谢。在您的示例中,
DecimalFormat.format(…)
给出的字符串表示形式实际上只有两位数字。但一旦你把它重新转换成双倍,这些准确性问题就会出现。当您试图表示“exakt”小数时,像double这样的二进制基格式总是会显示这样的效果。您可以更改为BigDecimal
以消除此类影响。在您的示例中,DecimalFormat.format(…)
给出的字符串表示形式实际上只有2位数字。但一旦你把它重新转换成双倍,这些准确性问题就会出现。当您试图表示“exakt”小数时,像double这样的二进制基格式总是会显示这样的效果。您可以更改为BigDecimal
,以消除此类影响