W JavaScript operator / wykonuje dzielenie w typie Number, czyli w arytmetyce zmiennoprzecinkowej. Dlatego wyrażenie 3/2 ma wartość 1.5, a nie 1. Aby otrzymać wartość całkowitą 1, trzeba w jakiś sposób usunąć część ułamkową.
Wyrażenie "var i=parseInt(3/2);" spełnia to wymaganie: najpierw oblicza się 3/2 (czyli 1.5), a następnie parseInt zwraca liczbę całkowitą uzyskaną przez obcięcie części ułamkowej. W efekcie i przyjmuje wartość 1.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- "var i=Number(3/2);" – funkcja Number nie zaokrągla i nie obcina; ona jedynie konwertuje wartość na typ Number. Ponieważ 3/2 już jest liczbą typu Number, wynik pozostaje 1.5.
- "var i=3/2;" – bez żadnej konwersji i dostaje dokładnie wynik dzielenia zmiennoprzecinkowego, czyli 1.5.
- "var i=parseFloat(3/2);" – parseFloat służy do uzyskania liczby (również ułamkowej) z zapisu tekstowego; nie obcina do liczby całkowitej. Dla 1.5 zwróci 1.5.
W praktyce programistycznej często spotyka się też podejście bardziej jednoznaczne semantycznie: gdy celem jest obcięcie części ułamkowej, stosuje się funkcje z obszaru matematyki (np. obcięcie w dół lub "ucięcie" do zera). Na egzaminie kluczowe jest jednak rozpoznanie, że Number i parseFloat nie zmienią 1.5 na 1, natomiast parseInt da wynik całkowity.