Varför är 0.1 + 0.2 = 0.30000000000000004?

Har du någonsin öppnat en webbläsarkonsol, skrivit 0.1 + 0.2 och förväntat dig 0.3? I stället får du 0.30000000000000004! Är datorn trasig? Nej, det kallas flyttalsmatematik (floating-point math).

Här är den korta förklaringen:

• Datorer tänker i binärt (ettor och nollor).

• Vissa bråktal (som 1/10) kan inte skrivas exakt i binärt, precis som 1/3 inte blir exakt 0.333 i decimalform.

• När datorn lägger ihop dessa approximeringar, får vi en liten avrundningsmiss.

Hur fixar vi det?

1. Använd inbyggda funktioner som toFixed(2) för visning.

2. Multiplicera med 100, räkna med heltal, och dela sedan med 100.

Så nästa gång datorn har 'fel', kom ihåg – den gör bara sitt bästa med oändliga tal i ett ändligt minne!

Read more