3

python (python 3) の整数部分と小数部分を取得する最も効率的な方法は何Decimalですか?

これは私が今持っているものです:

from decimal import *
>>> divmod(Decimal('1.0000000000000003')*7,Decimal(1))
(Decimal('7'), Decimal('2.1E-15'))

どんな提案でも大歓迎です。

4

2 に答える 2

2

使用することもできますmath.modf(ドキュメント)

>>> math.modf(1.0000000000000003)
(2.220446049250313e-16, 1.0)
python2.7 -m timeit -s 'import math' 'math.modf(1.0000000000000003)'
1000000 loops, best of 3: 0.191 usec per loop

divmodメソッド:

python2.7 -m timeit -s 'import decimal' 'divmod(decimal.Decimal(1.0000000000000003),decimal.Decimal(1))'
1000 loops, best of 3: 39.8 usec per loop

私はより効率的であると信じていますmath.modf

編集

さらに簡単で効率的な方法は、文字列を整数に変換することだと思います。

>>>a = int(Decimal('1.0000000000000003'))
1

>>>python2.7 -m timeit -s 'import decimal' 'int(decimal.Decimal('1.0000000000000003'))'
10000 loops, best of 3: 11.2 usec per loop

小数部分を取得するには:

>>>int(Decimal('1.0000000000000003')) - a
3E-16
于 2013-07-02T06:01:11.450 に答える