2016-04-12 2 views
0

Как получить точный результат умножения?Умножение python

Python сообщает мне, что 0.017 * 3 равно 0.051000000000000004. Есть ли какая-нибудь команда, чтобы сделать python print 0.051?

+0

Что вы пробовали? Я могу реплицировать вашу проблему, если просто наберите '.017 * 3', вы пробовали' print .017 * 3'. Чтобы понять, что происходит, вы можете найти определение «числа с плавающей запятой». –

ответ

2

Предполагая, что вы знаете ожидаемое количество значимых цифр, которые должна выводить операция, вы можете использовать встроенную функцию округления в python (в данном случае 3).

>>> round(0.017 * 3, 3) 
0.051 
+0

Вопрос: «Как получить точный результат в умножении». Этот ответ не отвечает на этот вопрос. Вы фактически добавляете неточность. Вы должны решить, почему вы предлагаете решение округления в начале вашего ответа. –

+0

Edit: Nevermind, вы правы! – jfbeltran

+0

Если это так, то добавьте это предположение в качестве предшественника вашего ответа. –

1

Дробные числовые литералы в Python имеют тип float, который представлен в двоичном виде. Используйте тип Decimal для арифметики основания 10.

>>> from decimal import Decimal 
>>> print(Decimal('0.017') * 3) 
0.051 
+0

Я получаю десятичный ('0.05100000000000000366373598126') – Jerther

+1

@ Jerther Возможно, вы не указали котировки вокруг ''0.017''? Какую версию Python вы используете? –

+0

Вы правы, я оставил цитаты. Я всегда думал, что это быстрый конструктор удобства, который просто анализирует строку. Ну, очевидно, это не так :) – Jerther

Смежные вопросы