java中小数和整数乘积造成精度损失如何解决
假如有一个小数0.1和一个整数358,那么我想要的乘积应该是35.8,但是在java程序中运行时却是35.800000000000004,那么如何才可以消除这样的精度损失。以达到其本来应该的结果。
public static void main(String [] args){ int a = 358; double b = 0.1; System.out.println(a*b); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
所以就不要用float 和double
基本类型又不是对象,咋会OOM
是个问题,涨姿势了
用Decimal,然后setScale
引用来自“beyondforever68”的评论
java的话少用double,多用bigdecimal肯定没错的
java的话少用double,多用bigdecimal肯定没错的
我使用bigdecimal也还是这个问题,不知道是不是我写的有问题。
用 BigDecimal 可以解决你的问题
偷懒的话,可以先乘10,计算后再除10
用BigDecimal计算
java.math.BigDecimal.BigDecimal(double val) 可以看看这个方法的注释 里面有讲的
你这个不错,你的代码里面的那个358.0可以换成358也没问题。把这个BigDecimal a = new BigDecimal("1287");中的数字换成字符串也没问题。
回复
没问题的