ID: 2921 OOP - Podstawy Średnie

Źródło: Arkusze CKE

Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?
console.log(0.1 + 0.2 === 0.3);
console.log(0.1 + 0.2);

Warianty odpowiedzi

  1. A

    true, 0.3

  2. B

    false, 0.3

  3. C

    false, 0.30000000000000004

  4. D

    true, 0.30000000000000004

Wyjaśnienie

Wynik tego działania zaskakuje wielu początkujących programistów, ale jest to cecha wspólna dla większości języków programowania.

Liczby zmiennoprzecinkowe są przechowywane w pamięci komputera w systemie binarnym zgodnie ze standardem IEEE 754. Ułamki dziesiętne takie jak 0.1 czy 0.2 nie mają dokładnej reprezentacji w zapisie binarnym, co prowadzi do drobnych błędów zaokrągleń.

Suma 0.1 i 0.2 w pamięci daje w rzeczywistości wynik 0.30000000000000004.

Z tego powodu porównanie tego wyniku z liczbą 0.3 zwraca false.

Sprawdź się w praktyce

Rozwiąż pełny test próbny INF.04 albo wylosuj pojedyncze pytanie na szybką powtórkę.

Podobne pytania — OOP - Podstawy