懂java的进下,有个问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 02:48:04
为什么用%计算double数的余数结果很离奇
比如23.3%2会等于1.300000000000007之类的。

因为1.3在计算机中没办法准确表示
你可以求一下1.3的二进制表示形式,是无穷无尽的,而计算机是用二进制进行存储的,所以只能用它所能表示的最接近的数来表示了

二进制的小数是用1/2^n表示的,多数情况下不能正好划为十进制小数,只能取近似值
在Access中更明显

乘以10再除以10就好了,你又不用精确到小数点后10几位

这是因为double的精度太高.所以就会出现最后的那个7