![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
fearuth |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 9.9.2008 Репутация: нет Всего: 1 |
Привет всем! У меня такой вопрос:
есть 3 чисал: a=14.96 b=1.76 c=13.2 Люди с адекватной логикой могут подтвердить, что (b+c)==a, но в python оказывается, что они не равны!!! В чем прикол? Если выполнить str(b+c)==str(a), главное сравнивает правильно! Подскажите в чем проблема и как ее решить? |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 14 Всего: 36 |
насколько помню в паскале не рекомендуется применять операцию равно к числам с плавающей точкой - в питоне аналогично Добавлено через 3 минуты и 51 секунду
Это сообщение отредактировал(а) pythonwin - 18.2.2009, 11:52 |
|||
|
||||
fearuth |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 9.9.2008 Репутация: нет Всего: 1 |
Я в шоке... А ведь этот язык я считал удобным...
|
|||
|
||||
Fenrir13 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 20.9.2008 Репутация: 1 Всего: 2 |
Числа с плавающей точкой нужно проверять на равенство с округлением до удовлетворяющей точности. Сама природа плавающей точки неточна, всегда есть какая-то ошибка. Поэтому её необходимо исключать округлением. При выводе str(myFloatNumber) также происходит округление.
|
|||
|
||||
alex_smirnov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 22.6.2007 Где: Санкт-Петербург Репутация: 2 Всего: 4 |
Уважаемый fearuth, везде так и никак по-другому.
Советую ознакомиться с базовыми теоретическими понятиями по-русски и по-английски прежде чем обвинять язык в неудобности. Это сообщение отредактировал(а) pythonwin - 19.2.2009, 14:43 |
|||
|
||||
fearuth |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 9.9.2008 Репутация: нет Всего: 1 |
Извеняюсь товарисчи. Был не прав. Просто ни когда не сталкивался до этого с данной операцией.
Хочу заметить однако, что в С++: float a=14.96, 1.76, 13.2, d=0; if(a==(b+c)) выдает false Если сделать перед операцией if : d=b+c if(a==d) выдает true, В python это не прокатывает... =( |
|||
|
||||
jython |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 28.3.2009 Репутация: нет Всего: нет |
>>> a=14.96 >>> b=1.76 >>> c=13.2 >>> int(c+b)==int(a) True |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |