【发布时间】:2016-04-11 00:51:23
【问题描述】:
我正在尝试制作一个 python 脚本,但无法使其正常工作。我正在处理非常小的数字,python 似乎不喜欢它。这是我的脚本:
x = 0
while x < 3:
x += .0001
if x == 2.5:
print "X is now: ", x
break
else:
print x
当我在 PyCharm 中运行它时,我得到了这个输出(我已经缩短了它,所以你不必滚动浏览一堆数字。)
2.4988
2.4989
2.499
2.4991
2.4992
2.4993
2.4994
2.4995
2.4996
2.4997
2.4998
2.4999
2.5
2.5001
2.5002
2.5003
2.5004
2.5005
2.5006
2.5007
2.5008
2.5009
2.501
Pycharm 的行为就像我的“if”语句不存在一样。它直接跳过数字 2.5 而不运行
if x == 2.5:
print "X is now: ", x
break
我认为这与我的计算机运行这些数字的方式有关,而我看到的 2.5 实际上是 2.5000001 或其他东西,但我不知道。我尝试将这些数字放入科学记数法中,希望它会有所帮助,但我得到了错误“太多的输出无法处理”
我对 python 还很陌生,并且开始对此感到恼火。任何和所有帮助它表示赞赏。谢谢。
【问题讨论】:
-
使用
print(repr(x))查看浮点数的(几乎)准确值,并使用x =decimal.Decimal()防止这种情况发生
标签: python numbers decimal pycharm