Zaokrąglanie - round
Jak zaokrąglić liczbę? Czy można wykonać zaokrąglenie do podanego miejsca po przecinku?
Math.round
Math.round(x)
- Parametry:
Number
x - liczba rzeczywista- Wartość:
Number
- zaokrąglona liczba całkowita
Zaokrągla wartość do liczby całkowitej - zgodnie z regułami matematycznymi. Jeżeli cyfra po przecinku jest większa lub równa 5, następuje zaokrąglenie w górę, a w przeciwnym razie w dół.
Przykład Math.round
Math.round(-Infinity); // -Infinity Math.round(-1); // -1 Math.round(-0.9); // -1 Math.round(-0.5); // -1 Math.round(-0.4); // 0 Math.round(-0.1); // 0 Math.round(0); // 0 Math.round(0.1); // 0 Math.round(0.4); // 0 Math.round(0.5); // 1 Math.round(0.9); // 1 Math.round(1); // 1 Math.round(Infinity); // Infinity Math.round(NaN); // NaN Math.round(undefined); // NaN
Zaokrąglenie liczby do podanego miejsca po przecinku
Co prawda nie da się wprost wykonać zaokrąglenia liczby do podanego miejsca po przecinku, ale można to zrobić w inny sposób. Trzeba jednak przy tym uważać na tzw. błąd zaokrągleń liczb zmiennoprzecinkowych. Na przykład aby zaokrąglić liczbę x do drugiego miejsca po przecinku, z czysto matematycznego punktu widzenia powinno wystarczyć wpisanie:
Math.round(x * 100) / 100
Niestety jak się możemy przekonać, w przypadku niektórych liczb wynik nie daje oczekiwanych rezultatów:
Math.round(1.005 * 100) / 100; // 1 1.005 * 100; // 100.49999999999999 Math.round(100.49999999999999); // 100
Rozwiązaniem będzie zastosowanie notacji wykładniczej unikając tym samym błędu wynikającego z wykonywania operacji na liczbie zmiennoprzecinkowej:
Number(Math.round(1.005 + 'e+2') + 'e-2'); // 1.01