ここで間違った精度が得られるのはなぜですか?私はfloaingポイントの後に10桁の3桁を求めました。pythonの小数精度とdjango DecimalField
>>> from decimal import Decimal
>>> from decimal import getcontext
>>> getcontext().prec = 3
>>> Decimal(1.111) + Decimal(2.222)
Decimal('3.33') # Why not 3.333?
そして2つ目の質問、ジャンゴDecimalField
のために、私はこのように私のフィールドを定義します。
value = models.DecimalField(max_digits=10, decimal_places=3)
それは十進のため
getcontext().prec = 3
を設定した場合と同じ結果が得られるのでしょうか? max_digits
設定として
したがって、max_digitsはgetcontext()と同じです。prec?もしそうなら、小数点以下の桁数(カンマの後の桁数)を小数点以下の桁で制御するにはどうすればいいですか?つまり、djangoはdecimal_placesを確保するために何をしますか? – user3599803
@ user3599803ソースコードをチェックしたところ、Django(1.9)は 'django.db.backends.utils.format_number'関数を' format_number(value、max_digits、decimal_places) 'の定義で使用していましたが、実際には、意見ではありません。あなたがそれを見て、私に教えてください)10進数は、データベースに文字列として格納されます。 – makaveli
実際に私のdb - MySQLでは、小数はDECIMAL(10,3)データ型として格納されます。だから少なくともここでは文字列ではありません。とにかく、Decimalオブジェクトのdecimal_placesの設定方法はまだ見えます。方法がある場合 – user3599803