Ursprungligen inskrivet av Enzo
Varför? För att det är flyttal inte reella tal. Det handlar om hur datorer lagrar talen och det har inget med Java att göra, generellt sett. Tänk efter själv: Om du vill skriva ned heltalen 1 till 10 på ett papper, hur många siffror måste du skriva ned? 10 hoppas jag du kom fram till. Okej, om du vill skriva ned flyttalen 1.0 till 10.0 då? Hur många fick du? Förhoppningsvis försökte du inte räkna efter utan inser att det finns oändligt många.
Förstår du vad jag är ute efter? En dator (och därmed dess programmeringsspråk) är begränsad till att lagra sina tal, heltal som reella tal, med ett visst antal bitar. Så alltså kan en dator inte lagra alla reella tal utan bara en del av dem. När man väljer hur datorn skall lösa det får man helt enkelt bestämma sig för vilka talområden man anser att man behöver bäst precision till.
Resultatet blir att du inte kan lita på att ett reellt tal är lika med ett annat. Du kan oftast göra meningsfulla jämförelser mellan två olika flyttal om du vill veta om ett är större än ett annat, men inte om de är lika.
Vill du lära dig mer, sök på "numeriska metoder". Där bör du kunna hitta mer info om hur datorer lagrar reella tal.