Математические операции (обычный калькулятор)

 
0
 
Python
ava
Munya | 16.06.2010, 13:23
Вот такой вопрос:

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


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


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

В общем как избежать такого и почему.
зы. Гуглил - не нашел.
Kommentare (2)
ava
_Viper_ | 16.06.2010, 12:55 #
Этого никак не избежать, это особенность записи дробных чисел в памяти компьютера.
ava
unicross | 16.06.2010, 15:25 #
Модуль decimal вам в помощь:
>>> 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)

Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden