Найти - Пользователи
Полная версия: Умножение дробных чисел
Начало » Python для новичков » Умножение дробных чисел
1 2
Иван
Почему питон считает не правильно?
например
31.400000000000002 = 3.14 * 10

нашел что то невнятное о сложности выражения данных. ну это же бред
Андрей Светлов
Питон считает все абсолютно правильно :)
http://asvetlov.blogspot.com/2011/02/blog-post.html
Иван
Странно что еще никаких костылей не поставили. Потому что питон считает как раз не правильно. Пост кстати прочитал, почему так происходит, понял
Андрей Светлов
Позвольте не согласиться.
Считается - правильно. Причем считается одинаково на всех языках программирования, Питон - не исключение.
Ошибка получается при вводе-выводе из-за округления. Числа-то двоичные.
Как я написал, ее постарались убрать - но полностью ликвидировать невозможно.
Иван
Я потому и говорю о костылях.
Всё таки
>>> x = 3.14 * 10
>>> x > 31.4
True
Не есть гуд
Ferroman
C'est la vie
Андрей Светлов
Вас не удивляет, что
0.33 * 10 < (1/3)*10, где (1/3) - натуральная дробь?
Проблема ведь та же - некоторые числа выглядят как бесконечные дроби при фиксированном основании.
Lexander
Иван
Используйте float по назначению - в научных вычислениях, для обработки оцифрованных значений, поступающих от аналоговых приборов и т.п.

А для операций с фиксированным кол-вом знаков после запятой есть decimal.
Иван
Подскажите, как использовать правильно? А то я кроме как
x=3.14*10
y=31.4
print str(x)==str(y)
true

не могу получить true =\
Ferroman
Прочитайте вот это: http://docs.python.org/tutorial/floatingpoint.html

Ответ на последний вопрос — используйте округление.
>>> round(y, 2) == round(x, 2)
True
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB