小数精度问题 |大十进制
Decimal Precision Issue | Big Decimal
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 位数字。
P.S : 我不想将值转换为字符串。
2401.99
是 double
文字 ,实际值略低于它。
改用 String
中的 BigDecimal
构造函数。
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 位数字。
P.S : 我不想将值转换为字符串。
2401.99
是 double
文字 ,实际值略低于它。
改用 String
中的 BigDecimal
构造函数。