首页 > 解决方案 > 打印函数返回不同的值

问题描述

大家好,我在 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)

当我从未来导入打印功能时,我得到了相同的结果。只是好奇为什么会发生这种情况?

注意:虽然打印不同,但如果我比较它们,我会得到相同的结果。

标签: pythonpython-2.7python-2.x

解决方案


您正在使用第一个命令打印浮点数,并使用第二个命令打印元组。这些在打印时以不同级别的准确度表示。

您可以通过自己指定准确性来简单地验证它:

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 在评论中回答了同样的问题——这只是更“可见”。


推荐阅读