Przejdź do treści

JS / Number.prototype - Kurs JavaScript (JS)

W tym rozdziale dowiesz się...

Jakie operacje możemy przeprowadzić na wartościach liczbowych?

  • JS
    constructor

    Gdzie jest zapisany konstruktor obiektu liczbowego?

  • JS
    toString

    Co zrobić, żeby przekształcić liczbę dziesiętną na wartość szesnastkową (heksadecymalną) lub ósemkową (oktalną)?

  • JS
    toLocaleString

    W jaki sposób zapisać liczbę w formacie zgodnym w rodzimym językiem użytkownika?

  • JS
    valueOf

    Jak przekształcić obiekt liczbowy na prostą wartość liczbową?

  • JS
    toFixed

    Jak zapisać liczbę ze stałą liczbą miejsc po przecinku (np. kwota)?

  • JS
    toExponential

    Jak zapisać liczbę w notacji eksponencjalnej?

  • JS
    toPrecision

    Jak zapisać liczbę w precyzyjnym formacie - za pomocą określonej liczby cyfr?

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; // true
new Number().constructor === Number;     // true
Number.prototype.constructor === Object; // false

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:

(+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

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:

(1000.2).toLocaleString(); // np.: "1 000,2"
(1000.2).toString();       // "1000.2"

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:

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

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:

(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

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:

(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

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:

(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