十进制精度问题|大十进制

时间:2016-03-10 15:34:10

标签: java bigdecimal

1

    BigDecimal ap = new BigDecimal(170.8999999999998,   MathContext.DECIMAL64).setScale(2, BigDecimal.ROUND_FLOOR);

结果:1​​70.89(必填:170.89)

2

    BigDecimal ap = new BigDecimal(170.89999999999998, MathContext.DECIMAL64).setScale(2, BigDecimal.ROUND_FLOOR); (1 Extra 9 in value)

结果:1​​70.90(必填:170.89)

3

    BigDecimal ap = new BigDecimal(2401.99).setScale(2, BigDecimal.ROUND_FLOOR);

结果:2401.98(必填:2401.99)

如何在没有舍入的情况下从值开始得到小数点后的2位数。

P.S:我不想将值转换为String。

1 个答案:

答案 0 :(得分:4)

df_observed是一个2401.99 文字,实际值低于该值。

使用double中的BigDecimal构造函数。