Operacje na wartościach liczbowych - Number.prototype
Jakie operacje możemy przeprowadzić na wartościach liczbowych?
- Konstruktor obiektu liczbowego - constructor
Gdzie jest zapisany konstruktor obiektu liczbowego?
- Konwersja liczby - toString
Co zrobić, żeby przekształcić liczbę dziesiętną na wartość szesnastkową (heksadecymalną) lub ósemkową (oktalną)?
- Formatowanie liczby zgodnie z językiem - toLocaleString
W jaki sposób zapisać liczbę w formacie zgodnym w rodzimym językiem użytkownika?
- Konwersja obiektu na wartość - valueOf
Jak przekształcić obiekt liczbowy na prostą wartość liczbową?
- Stała liczba miejsc po przecinku - toFixed
Jak zapisać liczbę ze stałą liczbą miejsc po przecinku (np. kwota)?
- Notacja eksponencjalna - toExponential
Jak zapisać liczbę w notacji eksponencjalnej?
- Precyzyjne formatowanie liczby - toPrecision
Jak zapisać liczbę w precyzyjnym formacie - za pomocą określonej liczby cyfr?
Konstruktor obiektu liczbowego - constructor
Gdzie jest zapisany konstruktor obiektu liczbowego?
Number.prototype.constructor
- Wartość:
Function
- konstruktor obiektu
Zawiera konstruktor wbudowanego obiektu liczbowego Number
.
Przykład Number.prototype.constructor
Number.prototype.constructor === Number; // true new Number().constructor === Number; // true Number.prototype.constructor === Object; // false
Konwersja liczby - toString
Co zrobić, żeby przekształcić liczbę dziesiętną na wartość szesnastkową (heksadecymalną) lub ósemkową (oktalną)?
Number.prototype.toString() Number.prototype.toString(radix)
- Parametry:
Number
radix - podstawa systemu liczbowego (2 - 36), zgodnie z którym wykonać przekształcenie (domyślnie: 10)- Wartość:
String
- tekst- Wyjątki:
TypeError
- bieżący obiekt nie jest typu liczbowego
Zapisuje liczbę w postaci tekstu. O tym, w jakim systemie będzie zapisana liczba, decyduje podstawa systemu liczbowego. Na przykład w systemie heksadecymalnym (szesnastkowym) mamy do dyspozycji 16 cyfr: cyfry arabskie 0-9 i litery a-f. Literze a odpowiada wartość 10, b - 11 itd. Innym popularnym systemem liczbowym jest system oktalny (ósemkowy) - podstawa 8. Natomiast na co dzień posługujemy się systemem decymalnym (dziesiętnym) - podstawa 10.
Aby wykonać przekształcenie w drugą stronę, użyj funkcji parseInt lub parseFloat.
Przykład Number.prototype.toString
(+1000.2).toString(); // "1000.2" (10).toString(); // "10" (10).toString(8); // "12" (10).toString(16); // "a" Number.prototype.toString.call(Infinity); // "Infinity" Number.prototype.toString.call(NaN); // "NaN" Number.prototype.toString.call(null); // TypeError Number.prototype.toString.call(undefined); // TypeError Number.prototype.toString.call("1"); // TypeError Number.prototype.toString.call({}); // TypeError
Formatowanie liczby zgodnie z językiem - toLocaleString
W jaki sposób zapisać liczbę w formacie zgodnym w rodzimym językiem użytkownika?
Number.prototype.toLocaleString()
- Wartość:
String
- tekst
Funkcja powinna zapisać liczbę w postaci tekstu w domyślnym języku ustawionym w systemie operacyjnym użytkownika. Na przykład w języku polskim liczby rzeczywiste zapisujemy z użyciem znaku przecinka, podczas gdy angielskim - z użyciem kropki. Dodatkowo w języku polskim dla poprawy czytelności kolejne tysiące liczby możemy oddzielać od siebie znakiem spacji.
Przykład Number.prototype.toLocaleString
(1000.2).toLocaleString(); // np.: "1 000,2" (1000.2).toString(); // "1000.2"
Konwersja obiektu na wartość - valueOf
Jak przekształcić obiekt liczbowy na prostą wartość liczbową?
Number.prototype.valueOf()
- Wartość:
- prosta wartość liczbowa
- Wyjątki:
TypeError
- bieżący obiekt nie jest typu liczbowego
Przekształca obiekt liczbowy na prostą wartość liczbową (już nie obiekt).
Przykład Number.prototype.valueOf
new Number(1).valueOf(); // 1 new Number(-1.2).valueOf(); // -1.2 new Number(NaN).valueOf(); // NaN new Number(Infinity).valueOf(); // Infinity Number.prototype.valueOf.call(null); // TypeError Number.prototype.valueOf.call(undefined); // TypeError Number.prototype.valueOf.call(""); // TypeError Number.prototype.valueOf.call("1"); // TypeError Number.prototype.valueOf.call({}); // TypeError
Stała liczba miejsc po przecinku - toFixed
Jak zapisać liczbę ze stałą liczbą miejsc po przecinku (np. kwota)?
Number.prototype.toFixed() Number.prototype.toFixed(fractionDigits)
- Parametry:
Number
fractionDigits - liczba cyfr po przecinku dziesiętnym (domyślnie: 0)- Wartość:
String
- tekst zawierający liczbę o stałej liczbie cyfr po przecinku dziesiętnym- Wyjątki:
RangeError
- została podana wartość fractionDigits mniejsza od 0 albo większa niż 20
Przekształca liczbę na jej tekstową reprezentację o określonej liczbie cyfr po przecinku, używając przy tym zaokrągleń. Dla wartości większych lub równych 1021 działa identycznie jak String.prototype.toString.
Ta funkcja może zwracać dokładniejsze wartości niż toString
. Na przykład toString
dla liczby 1000000000000000128 zwraca wartość "1000000000000000100", podczas gdy toFixed
- dokładną wartość.
Przykład Number.prototype.toFixed
(1.2).toFixed(); // "1" (1.5).toFixed(); // "2" (1.25).toFixed(1); // "1.3" (1.2).toFixed(3); // "1.200" (-12.3).toFixed(3); // "-12.300" NaN.toFixed(); // "NaN" Infinity.toFixed(); // "Infinity" (1).toFixed(-1); // RangeError (1).toFixed(21); // RangeError
Notacja eksponencjalna - toExponential
Jak zapisać liczbę w notacji eksponencjalnej?
Number.prototype.toExponential() Number.prototype.toExponential(fractionDigits)
- Parametry:
Number
fractionDigits - liczba cyfr po przecinku dziesiętnym- Wartość:
String
- tekst zawierający liczbę zapisaną w notacji wykładniczej o stałej liczbie cyfr po przecinku dziesiętnym- Wyjątki:
RangeError
- została podana wartość fractionDigits mniejsza od 0 albo większa niż 20
Przekształca liczbę na jej tekstową reprezentację zapisaną w notacji wykładniczej o jednej cyfrze przed przecinkiem i określonej liczbie cyfr po przecinku, używając przy tym zaokrągleń.
Przykład Number.prototype.toExponential
(1.2).toExponential(); // "1.2e+0" (1.5).toExponential(); // "1.5e+0" (1.25).toExponential(1); // "1.3e+0" (1.2).toExponential(3); // "1.200e+0" (1).toExponential(); // "1e+0" (10).toExponential(); // "1e+1" (100).toExponential(); // "1e+2" (1000).toExponential(); // "1e+3" (10000).toExponential(); // "1e+4" (-12.3).toExponential(3); // "-1.230e+1" NaN.toExponential(); // "NaN" Infinity.toExponential(); // "Infinity" (1).toExponential(-1); // RangeError (1).toExponential(21); // RangeError
Precyzyjne formatowanie liczby - toPrecision
Jak zapisać liczbę w precyzyjnym formacie - za pomocą określonej liczby cyfr?
Number.prototype.toPrecision() Number.prototype.toPrecision(precision)
- Parametry:
Number
precision - liczba wszystkich cyfr- Wartość:
String
- tekst zawierający liczbę o stałej liczbie cyfr- Wyjątki:
RangeError
- została podana wartość precision mniejsza od 1 albo większa niż 21
Przekształca liczbę na jej tekstową reprezentację o określonej liczbie wszystkich cyfr, używając przy tym zaokrągleń. Jeżeli to konieczne, liczba zostanie zapisana w notacji wykładniczej. Jeśli argument precision nie zostanie podany, funkcja zachowuje się identycznie jak String.prototype.toString.
Przykład Number.prototype.toPrecision
(1.2).toPrecision(); // "1.2" == (1.2).toString() (1.2).toPrecision(1); // "1" (1.5).toPrecision(1); // "2" (1.25).toPrecision(1); // "1" (1.2).toPrecision(3); // "1.20" (1).toPrecision(3); // "1.00" (10).toPrecision(3); // "10.0" (100).toPrecision(3); // "100" (1000).toPrecision(3); // "1.00e+3" (10000).toPrecision(3); // "1.00e+4" (-12.3).toPrecision(3); // "-1.23" NaN.toPrecision(); // "NaN" Infinity.toPrecision(); // "Infinity" (1).toPrecision(0); // RangeError (1).toPrecision(22); // RangeError