Python 和 Bash 比较数字

Python 和 Bash 比较数字

如果我在 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 了解更多详细信息,例如这个

相关内容