Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Математические операции (обычный калькулятор), работа с типами данных 
:(
    Опции темы
Munya
Дата 16.6.2010, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 15.2.2007

Репутация: нет
Всего: нет



Вот такой вопрос:

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

Код

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


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

В общем как избежать такого и почему. 
зы. Гуглил - не нашел.
PM MAIL   Вверх
_Viper_
Дата 16.6.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: 10
Всего: 11



Этого никак не избежать, это особенность записи дробных чисел в памяти компьютера.
PM MAIL   Вверх
unicross
Дата 16.6.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 422
Регистрация: 15.6.2008

Репутация: 1
Всего: 53



Модуль 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)


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.