扫码关注官方订阅号
认证0级讲师
继续推荐我的博客:
所以,使用 BigDecimal 类。
BigDecimal
对于 @besto 的回答。看过 JDK 文档和源码的都应该知道 Double.toString(9.6) 有很大的安全隐患。因为浮点数 9.6 本来就不是精确的。
Double.toString(9.6)
9.6
正确的写法:
BigDecimal a = new BigDecimal("9.6")); BigDecimal b = new BigDecimal("9")); System.out.println("" + a.multiply(b));
java的float不是一个精确的数值,9.6只是一个无限接近于9.6的数。1.0也是一个无限接近于1.0的小数。 想要得到精确的数字我知道的可以用BigInteger,BigFloat这样的类来解决。
用BigDecimal
BigDecimal a = new BigDecimal(Double.toString(9.6)); BigDecimal b = new BigDecimal(Double.toString(9)); System.out.println("" + a.multiply(b));
Output: 86.40
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
继续推荐我的博客:
所以,使用
BigDecimal
类。对于 @besto 的回答。看过 JDK 文档和源码的都应该知道
Double.toString(9.6)
有很大的安全隐患。因为浮点数9.6
本来就不是精确的。正确的写法:
java的float不是一个精确的数值,9.6只是一个无限接近于9.6的数。1.0也是一个无限接近于1.0的小数。
想要得到精确的数字我知道的可以用BigInteger,BigFloat这样的类来解决。
用BigDecimal
Output:
86.40