Форум сайта python.su
0
Почему питон считает не правильно?
например
31.400000000000002 = 3.14 * 10
нашел что то невнятное о сложности выражения данных. ну это же бред
Офлайн
14
Питон считает все абсолютно правильно :)
http://asvetlov.blogspot.com/2011/02/blog-post.html
Офлайн
0
Странно что еще никаких костылей не поставили. Потому что питон считает как раз не правильно. Пост кстати прочитал, почему так происходит, понял
Офлайн
14
Позвольте не согласиться.
Считается - правильно. Причем считается одинаково на всех языках программирования, Питон - не исключение.
Ошибка получается при вводе-выводе из-за округления. Числа-то двоичные.
Как я написал, ее постарались убрать - но полностью ликвидировать невозможно.
Офлайн
0
Я потому и говорю о костылях.
Всё таки
>>> x = 3.14 * 10
>>> x > 31.4
True
Офлайн
1
C'est la vie
Офлайн
14
Вас не удивляет, что
0.33 * 10 < (1/3)*10, где (1/3) - натуральная дробь?
Проблема ведь та же - некоторые числа выглядят как бесконечные дроби при фиксированном основании.
Офлайн
33
Иван
Используйте float по назначению - в научных вычислениях, для обработки оцифрованных значений, поступающих от аналоговых приборов и т.п.
А для операций с фиксированным кол-вом знаков после запятой есть decimal.
Офлайн
0
Подскажите, как использовать правильно? А то я кроме как
x=3.14*10
y=31.4
print str(x)==str(y)
true
не могу получить true =\
Офлайн
1
Прочитайте вот это: http://docs.python.org/tutorial/floatingpoint.html
Ответ на последний вопрос — используйте округление.
>>> round(y, 2) == round(x, 2)
True
Офлайн