如果我在 bash 中运行以下命令,我会得到正确的答案
# if [ 2.0000000000000000000000000001 > 2 ] ; then echo " True "; else echo " False " ; fi
True
#
但如果在 python IDLE 中运行
>>> if 2.00000000000000001 > 2.0:
print "true"
else:
print "false"
false
>>>
Python无法比较数字对吗?
我想我已经有了答案。 Python 只使用 10 位数字来表示浮点数。
>>> c=2.00000000001232
>>> print c
2.00000000001
>>> d= 2.00000000003234
>>> print d
2.00000000003
>>> e=2.000000000049
>>> print e
2.00000000005
>>>
多谢你们。
答案1
您尚未成功比较 bash 中的数字,您仅测试了“bash”(命令test
)已成功测试字符串的长度2.0000000000000000000000000001
并将不存在的输出重定向到名为2
.
您需要-gt
运算符,但以下情况除外:
[ 2.0000000000000000000000000001 -gt 2 ] && echo yes
-bash: [: 2.0000000000000000000000000001: 预期的整数表达式
你可能会想到:
[[ 2.0000000000000000000000000001 > 2 ]] && echo yes
并得到:
是的
除非此时您不比较整数,否则您正在对字符串进行排序:
[[ 9 > 11 ]] && echo yes
是的
要比较 Python 中的浮点数,请参阅 Stack Overflow 了解更多详细信息,例如这个