java - 小数精度问题 |大十进制

标签 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 位数字。

附言:我不想将值转换为字符串。

最佳答案

2401.99 是一个double literal,实际值略低于它。

改用 String 中的 BigDecimal 构造函数。

关于java - 小数精度问题 |大十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920809/

相关文章:

java - 有没有办法从 Java Bean 访问 web.xml 属性?

java - 如何在 Java 中设置千位分隔符?

java - 大数乘法

Scala BigDecimal 如何显示更多小数?

java - 将 BigDecimal 转换为 String 的正确方法

javascript - JavaScript 有十进制数学库吗?

java - 在 JBoss 4.2 上使用 JPA 启用 Hibernate 二级缓存

java - 如何从java上传jar文件到ooyala-spark作业服务器

java - 更新Android的Sqlite和ContentValues中的值

java - Active Directory 不支持 NamingListener?