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:
Numberradix - 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:
NumberfractionDigits - 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:
NumberfractionDigits - 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:
Numberprecision - 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
