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.000000000000000000000000000001: 予想される整数式
そう思うかもしれません:
[[ 2.0000000000000000000000000001 > 2 ]] && echo yes
そして得る:
はい
この時点で整数を比較しない限り、文字列をソートすることです。
[[ 9 > 11 ]] && echo yes
はい
Pythonで浮動小数点数を比較するには、スタックオーバーフローの詳細を参照してください。これ