Italia
Foro

Float-Problem, oder nicht?

 

KompilierenMarkierenSeparieren
Declare x!,y!,a!,b!
Cls
showmax
a!=0
b!=-20
x!=0
y!=-10

Whileloop 100

    y!=y!-0.1

EndWhile

If ((x!=a!) and (y!=b!))

    Print "Ist gleich"

EndIf

decimals 20
Print x!,y!,a!,b!
WaitInput
Der Code zeigt leider nicht Ist gleich an, aber er müsste.

Durch die Decimals-Zeile hebe ich hervor warum das Print nicht corsa wird.
 
05.05.2006  
 




RGH
Hallo David,

das Print X!,Y!,A!,B! zeigt ja recht deutlich, warum Y! eben immer noch ungleich B! ist. Bei Floats (= Double in anderen Sprachen) sind eben nicht alle Werte 100%ig exakt darzustellen. Die Genauigkeit ist halt auf 15 Stellen begrenzt. Durch die mehrmalige Addition mit 0.1 summiert sich bei Y! der Fehler auf eine Ungenauigkeit in der 16. Stelle, sodaß das Resultat eben nicht exakt -20 ist, sondern eben -20.000000000000035.
Bei Fließkommazahlen sollte man daher nie auf Gleichheit prüfen, sondern immer auf >=, <=, etc.
Das trifft im übrigen auf alle Programmiersprachen zu, die im Normal keine BCD-Dartstellung von Fließkommazahlen bieten.
(Eine Ausnahme war PowerBasic per DOS, welches Fließkommazahlen im BCD-Format darstellte.)

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
05.05.2006  
 



Jut!

Also mit round bzw. mit int(f!*1x) gerundet vergleichen, damit komm ich klar.
 
05.05.2006  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

563 Views

Untitledvor 0 min.

Themeninformationen

Dieses Thema hat 2 subscriber:

iF (2x)
RGH (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie