double hat zuviele nachkommastellen



  • hallo

    ich hab da ein kleines Problem

    und zwar ich habe zwei for-schleifen

    for(double shd=0.02;shd<=0.12;shd+=0.02)
    	{
    		for(double snd=0.02;snd<=0.12;snd+=0.02) 
    		{
    .
    .code
    .
                      }
              }
    

    wenn die variable shd 0.02 erstellt wird und ich in der visualstudio umgebung im debugmodus auf die variable gehe steht da nicht 0.02 sondern 0.0200000000
    halt mit ein paar nullen mehr. ist ja nicht weiter schlimm aber im nächsten durchlauf mit shd+=0.02 steht dann da als ergebnis nicht 0.04 sondern 0.0400000001 mit ne ein am ende eben. wie kann ich das beheben? hab schon einiges versucht, zb. zahl in ein string wandeln dann kuerzen und wieder zurück nach double aber das geht nicht, bzw ich habs nicht hingekriegt.

    will ausserdem ganz normal nur ne 0.04 rausbekommen am besten ohne nachbearbeitung
    bitte um hilfe.



  • Das liegt an der internen Darstellung von Nachkommastellen und ist meistens kein Problem. Du würdest eines kriegen, wenn du z.b. auf Gleichheit prüfen würdest. Aber ein kleiner-gleich ist kein Thema.



  • _matze schrieb:

    Das liegt an der internen Darstellung von Nachkommastellen und ist meistens kein Problem. Du würdest eines kriegen, wenn du z.b. auf Gleichheit prüfen würdest. Aber ein kleiner-gleich ist kein Thema.

    ja gut und was ist wenn ich auf gleichheit prüfen will? was kann man dann machen??



  • moglipackung schrieb:

    _matze schrieb:

    Das liegt an der internen Darstellung von Nachkommastellen und ist meistens kein Problem. Du würdest eines kriegen, wenn du z.b. auf Gleichheit prüfen würdest. Aber ein kleiner-gleich ist kein Thema.

    ja gut und was ist wenn ich auf gleichheit prüfen will? was kann man dann machen??

    Vergleichen, ob die Differenz ein gewisses Maximum (sowas wie 0.0001, wie du's brauchst) nicht überschreitet.


Anmelden zum Antworten