首先可以这么说就,这是所有语言的通病。
各位可以看看包装类语言和其他语言的精度区别
这边例举java与C的例子:
先放java的
然后这个是C的
由以上可以看出,明显来说包装类的这一方面做的会比较好。
其实低层来说的话,是因为高精度类型转换为二进制的浮点数可能会是无限循环小数。但由于浮点数精度有限被强行截断,所以转回十进制输出的数据会有误差。
那么如何优化这个问题
我们只需要将数据的大小拉高,将大部分数据转为计算机可以记住的int型数据然后后面在进行一个计算结束的时候将它精度在拉回来,也就像是将数据进行先乘以100再除以100这样类似的操作,只要我的乘数足够大的话就可以避免相应的误差。