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

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

Post by Anonymous »

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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post