1.
BigDecimal ap = new BigDecimal(170.8999999999998, MathContext.DECIMAL64).setScale(2, BigDecimal.ROUND_FLOOR);
结果:170.89(要求:170.89)
2.
BigDecimal ap = new BigDecimal(170.89999999999998, MathContext.DECIMAL64).setScale(2, BigDecimal.ROUND_FLOOR); (1 Extra 9 in value)
结果:170.90(要求:170.89)
3.
BigDecimal ap = new BigDecimal(2401.99).setScale(2, BigDecimal.ROUND_FLOOR);
结果:2401.98(要求:2401.99)
如何在不四舍五入的情况下只得到小数点后 2 位数字。
附言:我不想将值转换为字符串。
最佳答案
2401.99
是一个double
literal,实际值略低于它。
改用 String
中的 BigDecimal
构造函数。
关于java - 小数精度问题 |大十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920809/