2016-04-12 18 views
0

乗算の正確な結果を得るにはどうすればよいですか?乗算python

0.017 * 30.051000000000000004とPythonから通知されます。 python print 0.051を作成するコマンドはありますか?

+0

これまでに何を試しましたか?あなたが 'print .017 * 3'を試したときに' .017 * 3'と打てば問題を再現できます。何が起きているのかを理解するために、「浮動小数点数」の定義を参照したいと思うかもしれません。 –

答えて

2

予想される有効数字の桁数がわかっていると仮定すると、Pythonで組み込みの丸め関数(この場合は3)を使用できます。 Pythonで

>>> round(0.017 * 3, 3) 
0.051 
+0

質問は「どのようにして正確な結果を乗算で得るか」です。この答えはその質問に答えません。実際には不正確さが増しています。回答の最初に丸めソリューションを提供する理由を説明する必要があります。 –

+0

編集:気にしない、あなたは正しい! – jfbeltran

+0

これが当てはまる場合は、その前提を答えの先駆けとして追加します。 –

1

フラクショナル数値リテラルは、バイナリ形式で表現されるタイプfloatを有します。ベース10の算術にはDecimalタイプを使用してください。

>>> from decimal import Decimal 
>>> print(Decimal('0.017') * 3) 
0.051 
+0

Decimalを取得しました( '0.05100000000000000366373598126') – Jerther

+1

@Jerther「0.017」の周りに引用符を入力しなかったのでしょうか?どのバージョンのPythonを使用していますか? –

+0

あなたが正しいです、私は引用符を残しました。私はいつも文字列を解析するだけの簡単なコンストラクタだと思っていました。まあ明らかにそれではない:) – Jerther