将双精度数舍入到小数点后两位时遇到问题。我知道很多地方都问过这个问题。但我的问题略有不同,我在其他地方找不到。
据我所知,有两种方法可以做到这一点。
Math.round(double*100.0)/100.0
DecimalFormat(“###.##”)
我正在尝试使用第一种方式:一种自定义方式来四舍五入。当第二个小数为 0 时,结果将只打印第一个小数而忽略第二个。
例如,
Math.round(1.23333*100.0)/100.0
结果是 1.23。这很好用。Math.round(3.90*100.0)/100.0.
结果是 3.9。出现问题。我想显示 3.90 而不是 3.9Math.round(3*100.0)/100.0
. 结果是 4.0。我想要 4.00 而不是 4.0
所以,我的问题是,无论最后一个小数是否为 0,我如何才能获得带有 2 个小数的双精度值。我知道我可以使用第二种方式DecimalFormat(“###.##”)
——实现我想要的!但是使用第一种方法可以做到吗?
编辑:感谢您的回答。看起来不可能使用 round() 方法来实现它。但是,有些人建议使用两种方式的组合来实现它。但我认为只有使用DecimalFormat(“###.##”)
才能得到我想要的。任何人都可以确认吗?