如何打印浮点数的全精度 \[Python\]

新手上路,请多包涵

我编写了以下函数,其中传递了 x,y 的值:

 def check(x, y):
    print(type(x))
    print(type(y))
    print(x)
    print(y)
    if x == y:
        print "Yes"

现在,当我调用 check(1.00000000000000001, 1.0000000000000002) 它正在打印:

 <type 'float'>
<type 'float'>
1.0
1.0

现在从变量 x 和 y 的打印语句中,我很难调试为什么 x != y(尽管两者都打印相同的值)。虽然我通过打印 x - y 解决了它,这给了我不同之处,但有没有办法修改打印语句,以便知道为什么 x!=y 在这个特定的用例中,而不使用任何外部打印库和减法解决方案。

原文由 skaul05 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 857
1 个回答

要获得完全的精度和正确的格式,请执行

format(2**(1/2), '.60g')
# -> '1.4142135623730951454746218587388284504413604736328125'

并检查它

import decimal
print(decimal.Decimal.from_float(2**(1/2))
# -> '1.4142135623730951454746218587388284504413604736328125'

g 格式类型在需要时切换为指数表示法。

原文由 angeldeluz777 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题