Python 笔记本上的奇怪浮点格式
Strange float format on Python Notebook
我假设我已经尝试在网上找到我的问题的答案,但我发现甚至很难以正确的方式提出问题,所以我在这里:
谁能给我解释一下为什么下面的代码行return有两个不同的结果?
print(9.5*0.1)
print(0.95*1)
0.9500000000000001
0.95
我想象这背后会有一些浮点运算的原因,但我真的很好奇,因为我用(几乎)相同的数字做了几乎相同的操作,我想知道为什么这两种不同的格式
这完全取决于浮点数在计算机中的表示方式:
浮点表示定义了一个重要的属性——解析。该分辨率定义了您可以如何“准确”表示某些数字,因此可能会出现上述错误。 0.95 和 9.5 具有不同的分辨率,因此 0.95*1
的准确度仅 returns 0.95
的表示会产生更好的结果。
你可以在这里读更多关于它的内容:
https://en.wikipedia.org/wiki/Floating-point_arithmetic#:~:text=Floating%2Dpoint%20representation%20is%20similar,significand%2C%20mantissa%2C%20or%20coefficient.
我假设我已经尝试在网上找到我的问题的答案,但我发现甚至很难以正确的方式提出问题,所以我在这里:
谁能给我解释一下为什么下面的代码行return有两个不同的结果?
print(9.5*0.1)
print(0.95*1)
0.9500000000000001
0.95
我想象这背后会有一些浮点运算的原因,但我真的很好奇,因为我用(几乎)相同的数字做了几乎相同的操作,我想知道为什么这两种不同的格式
这完全取决于浮点数在计算机中的表示方式:
浮点表示定义了一个重要的属性——解析。该分辨率定义了您可以如何“准确”表示某些数字,因此可能会出现上述错误。 0.95 和 9.5 具有不同的分辨率,因此 0.95*1
的准确度仅 returns 0.95
的表示会产生更好的结果。
你可以在这里读更多关于它的内容:
https://en.wikipedia.org/wiki/Floating-point_arithmetic#:~:text=Floating%2Dpoint%20representation%20is%20similar,significand%2C%20mantissa%2C%20or%20coefficient.