6

私のコード:

a = '2.3'

a浮動小数点値として表示したかったのです。

は文字列なのでa、試しました:

float(a)

私が得た結果は次のとおりです。

2.2999999999999998

この問題の解決策が欲しいです。お願いします、助けてください。

私はこのチュートリアルに従っていました。

4

3 に答える 3

18

Python よりも浮動小数点型の理解に反映されていると思います。この「不正確さ」の背後にある理由については、浮動小数点数に関する私の記事(.NET ベースですが、それでも関連があります) を参照してください。正確な 10 進数表現を保持する必要がある場合は、decimal モジュールを使用する必要があります。

于 2009-01-02T09:22:15.433 に答える
6

これは Python の欠点ではなく、浮動小数点数をコンピューターに格納する方法の欠点です。実装言語に関係なく、同様の問題が発生します。

A を浮動小数点として「表示」したいとおっしゃいましたが、文字列だけを表示してみませんか? 視覚的には、期待するものと同じになります。

Jon が述べたように、必要が浮動小数点数を「表示」するだけではない場合は、decimal モジュールを使用して正確な表現を格納する必要があります。

于 2009-01-02T09:27:15.783 に答える
4

理由を説明する優れた回答。標準ライブラリから可能な実用的なソリューションを追加したいだけです:

>>> from decimal import Decimal
>>> a = Decimal('2.3')
>>> print a
2.3

これは実際には Python の (非常に) FAQ であり、ここで回答を読むことができます。


編集: John Skeet が既にこれについて言及していることに気付きました。しかたがない...

于 2009-01-02T16:43:44.910 に答える