2017-01-20 5 views
0

私は、変数にfloat値として計算され保存される小数を挿入すると予想されるコードを実行しています。3/4などの小数を入力する方法は?

次のコマンドを使用しています。それは私が、このような4.5などの入力を与えたときに正常に動作します:

a = float(input('>> ')) 

しかし3/4のようなものは私にエラーを与えます。私は問題が何であるか知っていますが、変数に浮動小数点として解決して保存される小数を入力する別の方法があるかどうかを知りたいと思います。

[sign] numerator ['/' denominator] 

r = float(Fraction(input(">>> "))) 

この形を持っている山車と文字列を受け入れる:ジョシュ・リーが指摘したよう

+0

'' 3/4''は浮動小数点数の表現ではありません。ユーザーが分数を入力できるようにするには、それを自分で解析する必要があります。 – jonrsharpe

+0

入力を文字列として読み込み、この質問の答えに記載されている解を適用します。http://stackoverflow.com/questions/2371436/evaluating-a-mathematical-expression-in-a-string –

+0

https:// docs .python.org/3/library/fractions.html –

答えて

1

floatにキャストし、その後Fractionfrom fractions import Fraction)でそれをラップし、 as noted in its docs

予期しない入力がそのフォームに守られないようにするには、もちろんそれをtry-exceptにラップしてください。

+0

アプリケーションがそれに対処できる場合、結果のFractionを浮動小数点に変換することは価値がないかもしれません.Fractionは精度を失うことはなく、それを分数として残す。 – blubberdiblub

関連する問題