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
может кто -нибудь объяснить, почему это происходит?
Я изучаю числовой анализ и наткнулся на эту дилемму.[code]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 [/code] может кто -нибудь объяснить, почему это происходит?
У меня есть система, которая в основном отслеживает финансы. В этом приложении есть поле «стоимость» (которое, к сожалению, является полем VARCHAR). В это поле вводятся различные значения, например:
£90
£210 per day
£50 per logo
Design - £180
£36...