Python 打印函数返回的不同网络值

Python 打印函数返回的不同网络值,python,python-2.7,python-2.x,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.99999999998 (0.999999999835498,6) 1.0 (0.99

大家好,我正在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.99999999998
(0.999999999835498,6)
1.0
(0.9999999998357,7)
1.0
(0.99999999967,8)
1.0
(1.0,9)

当我从future导入打印函数时,我得到了相同的结果。 只是好奇为什么会这样


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

您使用第一个命令打印浮点,使用第二个命令打印元组。打印时,它们以不同的精度表示

您只需自己指定精度即可进行验证:

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)


@巴马尔在评论中回答了同样的问题——这只是更“明显”而已。

我认为这不是一个有效的重复答案。输出应为
0.99999999998355 0.99999999999998355 6、0.999999999999999836 0.999999999999836 7、0.999999999999999997 0.99999999999999 8、1.0 1.0 9
。Python3给出了预期的结果output@venky__正确,即使我在windows上用Python2.7测试,我也会得到您的结果。。。那么您使用的是哪个操作系统呢?它看起来像是
print()。当它只打印浮点数时,它会将其舍入到较少的小数位数。如果您想要精确控制,请使用格式字符串,以便指定位数。对于所有注释,我使用的是windows 10 64位操作系统和python 2.7 32位操作系统,问题是我没有任何问题我只是想知道为什么我会得到不同的结果虽然我做了相同的数学问题谢谢你的回答但我问为什么打印函数打印不同values@Dudib因为在打印时使用了默认表示。二进制数据f.e.wii通过打印替换
0x13
\n
-如果您想要不同的表示形式,那么默认值是什么-您需要指定它。类使用
\uuuu str\uuuu
表示非正式表示,使用
\uuuuu repr\uuuu
表示明确表示。阅读更多信息:-如果你更关注“为什么水是湿的?”一系列好奇的问题-嗯-因为。