通过打印功能返回的differnet值

时间:2019-10-07 06:36:48

标签: python python-2.7 python-2.x

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

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

注意:尽管打印效果不同,但如果我比较它们,结果也会相同。

1 个答案:

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