多语言展示
当前在线:1802今日阅读:162今日分享:23

Java 解决 float 或者 double 计算精度误差问题

在工作中,我发现了用float类型 和 int类型的两个数相乘,然后强转int型。会出现一些问题。如 : (int)180*0.7 ,预想的结果是126,但真机运行结果为125。下面我们来分析和解决这个问题。
工具/原料

jdk1.8 eclipse

方法/步骤
1

原因分析:计算机用二进制存放数据,有些小数(10进制转2进制,乘2取整至小数位为零,有些小数有可能小数位永远达不到零,然后定个精度就不继续乘2取整操作)是无法准确表示的。

2

解决方法:使用BigDecimal提高计算的精度。下面展示java中普通计算和使用BigDecimal计算的区别。

3

普通计算方法:

4

使用BigDecima计算方法:

推荐信息