Форум сайта python.su
Объясните, пожалуйста, в чем проблема
import decimal
import random
def random_float(start, end):
return random.random()*(end-start)+start
def random_decimal(start, end, decimal_places=2):
d = str(random_float(start, end))
print d
print decimal.getcontext()
return decimal.Decimal(d).quantize(decimal.Decimal(10 ** (-decimal_places)))
print random_decimal(1000, 10000)
2430.39449204
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, flags=[], traps=[Overflow, DivisionByZero, InvalidOperation])
Traceback (most recent call last):
File "decimal_test.py", line 15, in <module>
print random_decimal(1000, 10000)
File "decimal_test.py", line 12, in random_decimal
return decimal.Decimal(d).quantize(decimal.Decimal(10 ** -2))
File "/usr/lib/python2.7/decimal.py", line 2464, in quantize
'quantize result has too many digits for current context')
File "/usr/lib/python2.7/decimal.py", line 3866, in _raise_error
raise error(explanation)
decimal.InvalidOperation: quantize result has too many digits for current context
Офлайн
Вот блин не внимательность, скобки не там поставил.
#Вместо
decimal.Decimal(10 ** (-decimal_places))
#Надо
decimal.Decimal(10)**(-decimal_places)
Офлайн