Как получить точный результат умножения?Умножение python
Python сообщает мне, что 0.017 * 3
равно 0.051000000000000004
. Есть ли какая-нибудь команда, чтобы сделать python print 0.051
?
Как получить точный результат умножения?Умножение python
Python сообщает мне, что 0.017 * 3
равно 0.051000000000000004
. Есть ли какая-нибудь команда, чтобы сделать python print 0.051
?
Предполагая, что вы знаете ожидаемое количество значимых цифр, которые должна выводить операция, вы можете использовать встроенную функцию округления в python (в данном случае 3).
>>> round(0.017 * 3, 3)
0.051
Вопрос: «Как получить точный результат в умножении». Этот ответ не отвечает на этот вопрос. Вы фактически добавляете неточность. Вы должны решить, почему вы предлагаете решение округления в начале вашего ответа. –
Edit: Nevermind, вы правы! – jfbeltran
Если это так, то добавьте это предположение в качестве предшественника вашего ответа. –
Дробные числовые литералы в Python имеют тип float
, который представлен в двоичном виде. Используйте тип Decimal
для арифметики основания 10.
>>> from decimal import Decimal
>>> print(Decimal('0.017') * 3)
0.051
Я получаю десятичный ('0.05100000000000000366373598126') – Jerther
@ Jerther Возможно, вы не указали котировки вокруг ''0.017''? Какую версию Python вы используете? –
Вы правы, я оставил цитаты. Я всегда думал, что это быстрый конструктор удобства, который просто анализирует строку. Ну, очевидно, это не так :) – Jerther
Что вы пробовали? Я могу реплицировать вашу проблему, если просто наберите '.017 * 3', вы пробовали' print .017 * 3'. Чтобы понять, что происходит, вы можете найти определение «числа с плавающей запятой». –