Warum tritt kein schwimmender Punktfehler in gedruckter Form (0,1* 100000) gegenüber (Dezimal (0,1)* 100000) aufgrund ei

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum tritt kein schwimmender Punktfehler in gedruckter Form (0,1* 100000) gegenüber (Dezimal (0,1)* 100000) aufgrund ei

by Anonymous » 18 Apr 2025, 01:18

Ich studiere numerische Analyse und bin auf dieses Dilemma gestoßen.

Code: Select all

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>
Ich merke, dass trotz 0,1 keine genaue Gleitkomma-Darstellung, wenn ich sie mit 100000 multipliziere (die eine genaue Gleitkomma-Darstellung aufweist), und die Genauigkeit dessen, wie ich das Ergebnis drucke, erhöht, merke ich keinen Fehler. < /p>
print(' %.22f ' % P) # Result: 10000.0000000000000000000000
< /code>
Dies steht im Gegensatz zu dem Fall, in dem ich die Dezimalmethode verwende, wobei ich den Fehler hinter dem Produkt sehen kann. < /p>
print(Decimal(0.1) * 100000)
< /code>
Wie kommt es auchprint("%.55f" % 0.1) #0.1000000000000000055511151231257827021181583404541015625
Kann jemand erklären, warum dies passiert?

Top