2

和有什么区别

.3+.3+.3+.1 == 1

返回 false,而

.3+.3+.1+.3 == 1

返回真?这也适用于 Python。

4

2 回答 2

6

这是由于浮点运算。您可以使用ieee754函数查看浮点表示。

>> ieee754(.3+.3+.3+.1)

ans =

0011111111101111111111111111111111111111111111111111111111111111

>> ieee754(.3+.3+.1+.3)

ans =

0011111111110000000000000000000000000000000000000000000000000000
于 2012-05-30T21:58:41.267 回答
3

这是一般有限精度算术的一般结果。以给定精度表示的可能浮点数集仅形成所有实数集的子集。因此,只有那些精确等于计算机上可用浮点表示的有限数量的数字。因此,除非您的数字之一与其有限精度表示完全相同,否则在内存中表示为字节的实际数字实际上只是一个近似值。然后,在使用这些数字执行算术运算时,您将得到错误传播。对数值分析进行一些研究,以便对此类事物进行更全面和更精确的定义。

于 2012-05-30T22:20:32.910 回答