您好,我在Windows 10 64位操作系统上使用python 2.7 32,但得到了一些奇怪的结果。
当运行以下代码时
from numpy import sin, pi
for i in range(6, 10):
x = 10**-i
print(sin(x*pi)/x/pi)
print(sin(x*pi)/x/pi, i)
我得到不同的结果,尽管它是相同的数学
0.999999999998
(0.99999999999835498,6)
1.0
(0.99999999999998357,7)
1.0
(0.99999999999999967,8)
1.0
(1.0,9)
从将来导入打印功能时,我得到相同的结果。 只是好奇为什么会发生这种情况?
注意:尽管打印效果不同,但如果我比较它们,结果也会相同。
答案 0 :(得分:1)
您将使用第一个命令来打印浮点,并使用第二个命令来打印元组。这些在打印时以不同的精确度表示。
您可以简单地通过自己指定准确性来进行验证:
from numpy import sin, pi
for i in range(6, 10):
x = 10**-i
print("{0:.30f}".format(sin(x*pi)/x/pi)) # print with more accuracy
print(sin(x*pi)/x/pi, i)
输出:
0.999999999998354982544412905554 # more accuracy and (if rounded) same as the tuple value
(0.999999999998355, 6)
0.999999999999983568699235547683
(0.9999999999999836, 7)
0.999999999999999666933092612453
(0.9999999999999997, 8)
1.000000000000000000000000000000
(1.0, 9)
@Bamar在评论中回答了相同的问题-这只是“可见”。