Przejdź do treści

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?

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
Facebook