行うときに丸めの問題を回避する最善の方法は何ですか:
>>> a =8.92138
>>> a
8.92138
>>> int(a*100000)
892137
小数は私に与えます
>>> Decimal(a)
Decimal('8.921379999999999199644662439823150634765625')
行うときに丸めの問題を回避する最善の方法は何ですか:
>>> a =8.92138
>>> a
8.92138
>>> int(a*100000)
892137
小数は私に与えます
>>> Decimal(a)
Decimal('8.921379999999999199644662439823150634765625')
int
丸めません -- 下限を見つけます (小数部分を切り捨てます)。
>>> n = 8.92138
>>> '%.42f' % n # what n really is
'8.921379999999999199644662439823150634765625'
>>> 100000 * n # result is slightly lower than 892138
892137.9999999999
>>> int(100000 * n) # int takes the floor
892137
可能であれば、最初から Decimal を使用します。
>>> a = Decimal('8.92138')
>>> int(a * 100000)
892138
丸めるにはDecimal.quantizeを使用します
>>> a = 8.92138
>>> Decimal(a) * 100000
Decimal('892137.9999999999199644662440')
>>> (Decimal(a) * 100000).quantize(1)
Decimal('892138')
>>> str(a)
'8.92138'
>>> int(Decimal(str(a)) * 100000)
892138