Почему ошибка плавающей запятой не происходит в печати (0,1* 100000) против (десятичное (0,1)* 100000) из -за представлеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему ошибка плавающей запятой не происходит в печати (0,1* 100000) против (десятичное (0,1)* 100000) из -за представле

Сообщение Anonymous »

Я изучаю числовой анализ и наткнулся на эту дилемму.

Код: Выделить всё

from decimal import Decimal
a = 0.1 ;
N = 100000 ;

# product calculation
P = N*a

# Print product result with no apparent error
print(' %.22f ' % P)
# Print product result with full Decimal approximation of 0.1
print(Decimal(0.1) * 100000)
< /code>
Я понимаю, что, несмотря на то, что 0.1 не имеет точного представления с плавающей точкой, когда я умножаю его на 100000 (у которого точное представление с плавающей точкой) и повышать точность того, как я печатаю результат, я не замечаю никакой ошибки. < /p>
print(' %.22f ' % P) # Result: 10000.0000000000000000000000
< /code>
Это в отличие от случая, когда я использую десятичный метод, где я вижу ошибку за продуктом. < /p>
print(Decimal(0.1) * 100000)
< /code>
Кроме того, почему я могу распечатать до 55 -й цифры точности числа, если стандарт IEEE754 позволяет только 53?print("%.55f" % 0.1) #0.1000000000000000055511151231257827021181583404541015625
может кто -нибудь объяснить, почему это происходит?

Подробнее здесь: https://stackoverflow.com/questions/795 ... l0-1100000
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»