val == 0 false

Status
Niet open voor verdere reacties.

Westerland

Gebruiker
Lid geworden
27 jun 2011
Berichten
286
Goedemiddag,

Ik zit met een vrij vage bug. Ik heb een if statement waarin 4 waardes vergelijkt worden:

om een of andere reden geeft die bij 1 vergelijking false namelijk:

(camZ + roomSizeZ == 0)

als ik dit uit de if statement trek en het in een variabel stop krijg ik het volgende:

double val = camZ + roomSizeZ;

vervolgens print ik de waarde van val uit en vergelijk ik het met 0:

DEBUG(MString() + " val= " + val + " check: " + (val == 0));

er wordt vervolgens uitgeprint: 0 en 0.

wanneer ik het wegschrijf naar een logfile blijkt de waarde niet 0 te zijn maar 1.77636e-015. Iemand een idee waar dit aan kan liggen ?
 
een betere vergelijking zou kunnen zijn (zonder dat je last hebt van je precisie in dit specifiek geval)

if (camZ == -roomSizeZ) {}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan