Strona główna › Pytania INF.04 › Pytanie 647
INF.04 · pytanie #647
Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu? <pre class="code-block">console.log(0.1 + 0.2 === 0.3); console.log(0.1 + 0.2);</pre>
- Atrue, 0.3
- Btrue, 0.30000000000000004
- Cfalse, 0.3
- Dfalse, 0.30000000000000004
Poprawna odpowiedź: D. false, 0.30000000000000004
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Wynik wyrażenia `0.1 + 0.2` w JavaScript nie jest równy `0.3` ze względu na sposób reprezentacji liczb zmiennoprzecinkowych w pamięci komputera. W programowaniu, liczby zmiennoprzecinkowe są przechowywane zgodnie z normą IEEE 754, co prowadzi do drobnych błędów zaokrągleń. W przypadku `0.1` oraz `0.2` ich suma w rzeczywistości daje wynik `0.30000000000000004`, co jest nieco większe niż `0.3`. Z tego powodu, porównując `0.1 + 0.2` z `0.3`, otrzymujemy `false`. To zjawisko ilustruje potrzebę ostrożności przy porównywaniu wartości zmiennoprzecinkowych i zachęca do używania metod porównawczych, które uwzględniają tolerancję błędu, takich jak `Math.abs(a - b) < epsilon`, gdzie `epsilon` to bardzo mała liczba. W praktyce, zrozumienie tych zasad jest kluczowe dla zapobiegania błędom w obliczeniach finansowych czy innych zastosowaniach wymagających wysokiej precyzji.
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.