在工作中,我发现了用float类型 和 int类型的两个数相乘,然后强转int型。会出现一些问题。如 : (int)180*0.7 ,预想的结果是126,但真机运行结果为125。下面我们来分析和解决这个问题。
工具/原料
jdk1.8 eclipse
方法/步骤
1
原因分析:计算机用二进制存放数据,有些小数(10进制转2进制,乘2取整至小数位为零,有些小数有可能小数位永远达不到零,然后定个精度就不继续乘2取整操作)是无法准确表示的。
2
解决方法:使用BigDecimal提高计算的精度。下面展示java中普通计算和使用BigDecimal计算的区别。
3
普通计算方法:
4
使用BigDecima计算方法:
上一篇:过年手抄报怎么画?
下一篇:sk te中间填什么