Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Математические операции (обычный калькулятор)


Автор: Munya 16.6.2010, 12:23
Вот такой вопрос:

обычная командная строка

Код

x = 5
y = 100.0
x/y
0.050000000000000003
x = 3.0
x/y
0.029999999999999999


Отклонение в принципе не велико, но если что-то необходимо вычислить точно..

В общем как избежать такого и почему. 
зы. Гуглил - не нашел.

Автор: _Viper_ 16.6.2010, 12:55
Этого никак не избежать, это особенность записи дробных чисел в памяти компьютера.

Автор: unicross 16.6.2010, 15:25
Модуль http://docs.python.org/library/decimal.html вам в помощь:
Код
>>> from decimal import Decimal
>>> x, y = 5, 100.0
>>> x = Decimal(x)
>>> y = Decimal(str(y))
>>> z = Decimal('3.0')
>>> a = x / y
>>> b = z / y
>>> a, b
(Decimal('0.05'), Decimal('0.03'))
>>> float(a), float(b)
(0.050000000000000003, 0.029999999999999999)


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)