Andrise programmeerimisalane WIKI

Number

Konstruktor Number on mõeldud numbriprimitiivide ümber täiendavate meetodite ja omadustega objektide loomiseks. Juhul kui kasutada konstruktorit Number koos operaatoriga new, on tagastusväärtuseks uus Number tüüpi objekt. Ilma operaatorita new saab konstruktorit kasutada tüübi teisenduseks - sisendiks saadud väärtus teisendatakse primitiivsele numbrilisele kujule.

var nr1 = new Number(123); // numbriobjekt
var nr2 = Number("26"); // 26
var nr3 = Number("ZZZ"); // NaN

Üldiselt ei ole numbrikonstruktori kasutamine reeglina mõistlik. Konstruktori kasutamine lisab koodile omajagu keerukust, samas kui JavaScript konverteerib primitiivsed numbriväärtused vajadusel automaatselt ise numbriobjektiks. Seega kõike, mida saab teha läbi konstruktori genereeritud numbriobjektiga, saab teha ka primitiivse numbriväärtusega.

Numbrite esitamine

Numbriliteraaliks on reeglina ilma täiendava märgistuseta number ise. Komakohad eraldatakse numbris punktiga, kusjuures numbri ja komakoha eraldaja vahele ei tohi jääda muid sümboleid nagu tühikuid. Vastasel korral eeldab interpretaator et punkti puhul on tegu mitte komakoha eraldaja, vaid notatsioonioperaatoriga. Juhul kui komakoha eraldaja ees on vaid number 0, võib selle ka ära jätta.

Numbriliteraale saab esitada mitmel viisil. Esiteks kõige lihtsam vorm, kus numbrid tähistavad kümnendsüsteemi numbrit vastavalt kasutatud kujule.

12345.67;

Teiseks oktaalnumbrid (kaheksandiksüsteem, 0..8), mida eristab kümnendsüsteemi numbritest numbri ees käiv number 0.

0777; // 511

Kolmandaks kuueteistkümnendsüsteemi numbrid (0..F), mida saab moodustada, lisades numbri ette märgistuse 0x.

0xFF; // 255

Samuti saab kasutada numbri eksponentkuju, liites mantissile märgistuse E+/- ning selle järel kümne astme.

1.23e3;
1.23e-2; 0.0123

Numbri kuju ei mängi keeles siiski erilist rolli, oluline on väärtus ise, mitte selle esitusviis. Seega on kümnendkujul number ja sama väärtusega oktaalnumber, näiteks 511 ja 0777 üksteisega täielikult võrdsed.

511 === 0777; // true

Omadused

Globaalsel objektil Number on mitmed staatilised omadused, mis tähistavad numbriobjekti erinevaid parameetreid, näiteks suurimat kasutatavat numbrit. Staatiline omadus tähendab, et see on defineeritud objektis Number mitte selle prototüübis ning seega ei liigu edasi ka järgnevatele numbriobjektidele. Sellist staatilist omadust saab lugeda kujul Number.MAX_VALUE. Kui proovida sama mõne numbriobjektiga - numbriline_vaartus.MAX_VALUE, on väärtuseks undefined.

MAX_VALUE

Number Number.MAX_VALUE

Omadus tähistab suurimat kasutatavat numbrit, milleks on umbkaudu 1.79×10308 - kõiki sellest numbrist suuremaid väärtusi tähistab lõpmatuse väärtus Infinity.

if(a * b <= Number.MAX_VALUE){
    funktsioon1();
}else{
    funktsioon2();
}

MIN_VALUE

Number Number.MIN_VALUE

Omadus tähistab vähimat kasutatavat numbrit, milleks on umbkaudu 5×10-324 - kõiki sellest numbrist väiksemaid väärtusi tähistab 0.

if(a / b >= Number.MIN_VALUE){
    funktsioon1();
}else{
    funktsioon2();
}

NaN

NaN Number.NaN

Globaalse objekti Number omadus NaN tähistab mitte-numbrilist väärtust ning on võrdne globaalse objekti NaN omaduse väärtusega. NaN väärtust ei saa kasutada võrdlustehetes, kuna ta ei ole millegagi võrdne, sealhugas ka mitte iseendaga. NaN väärtuse kontrollimiseks saab kasutada funktsiooni isNaN.

var nr = Number.NaN;
nr == NaN; //false
isNaN(nr); //true
isNaN(Number.NaN); //true

NEGATIVE_INFINITY

Number Number.NEGATIVE_INFINITY

Numbri omadus NEGATIVE_INFINITY tähistab negatiivset lõpmatust ning on võrdne globaalse objekti omadusega -Infinity. Väärtus tekib, kui positiivne number jagada väärtusega 0 või kui üritada luua suuremat numbrit kui MAX_VALUE.

POSITIVE_INFINITY

Number Number.POSITIVE_INFINITY

Numbri omadus POSITIVE_INFINITY tähistab lõpmatust ning on võrdne globaalse objekti omadusega -Infinity. Väärtus tekib, kui negatiivne number jagada väärtusega 0 või kui üritada luua suuremat negatiivset numbrit kui -MAX_VALUE.

Meetodid

Numbriobjekti meetodid on rakendatavad kõikidel numbritel - nii numbriobjektidel, kui ka primitiivsetel numbrilistel väärtustel. Viimasel juhul luuakse numbriväärtuse ümber ajutine numbriobjekt ning viiakse meetod läbi selle objekti juures. Peale meetodi töö lõppemist, objekt kustutatakse.

Numbriliteraali korral meetodite kasutamiseks tuleb numbri ning punktnotatsiooni operaatori punkti vahele jätta tühik - vastasel korral arvab interpretaator, et tegu on komakoha eraldajaga, mitte punktnotatsiooniga.

1234.toExponential(); //VALE, SyntaxError
1234 .toExponential(); //ÕIGE

toExponential

String number.toExponential()

Meetod tagastab numbri eksponentesituse stringina Me+-P, kus M on numbri mantiss ning P astendaja. Aluseks on 10, seega numbri täpsem kuju oleks Mx10P.

var nr = 134;
alert(nr.toExponential()); //1.34e+2

Meetodil on ka valikuline parameeter, mis võimaldab määrata kasutatavate komakohtade arvu eksponentesituse kuvamisel. Vaikimisi näidatakse nii palju komakohti, kui on vaja numbri esitamiseks, kui antud parameetriga saab seda arvu vähendada (ümardatakse).

var nr = 123456789;
alert(nr.toExponential(2)); //1.23e+8

toFixed

String number.toFixed([Number komakohti = 0])

Meetod toFixed tagastab stringi kujul numbri väärtuse, mis on ümardatud parameetris antud (vaikimisi 0) komakoha täpsuseni.

1234.56789 .toFixed(); // "1234"
12e+9 .toFixed(2); // "12000000000.00"

toLocaleString

String number.toLocaleString()

Meetod teisendab numbri stringiks lokaali poolt määratud kujuna. Meetodi tööle ei saa väga kindel olla, kuna arvutites on lokaalid tihtipeale valesti seatud. Samuti käsitlevad erinevad platvormid meetodi tööd erinevalt - halvemal juhul on tulemus täpselt sama mis meetodi toString korral ning lokaali ei võeta arvesse, isegi kui see on korrektselt seatud.

1234567.45 .toLocaleString(); //  "1 234 567,45"

toPrecision

String number.toPrecision([Number täpsus])

Meetod toPrecision tagastab numbri väärtuse stringi kujul vastavalt parameetrina saadud nõutud täpsusele. Täpsust hakatakse lugema numbri vasakust servast, kus 1 tähendab, et arvestatakse ainult esimest numbrit ning järgmised asendatakse nullidega. Juhul kui täpsuse parameeter on seadmata, toimib meetod sarnaselt meetodile toString, tagastades numbri väärtuse stringi kujul.

123.56 .toPrecision(1); //100
123.56 .toPrecision(2); //120
123.56 .toPrecision(3); //123
123.56 .toPrecision(4); //123.5

toString

String number.toString([Number radix = 10])

Meetod teisendab numbri stringi kujule. Meetodil on ka valikuline parameeter, millega saab määrata teisendatava numbri baasi (2..36), vaikimisi on selleks 10.

123 .toString(); // "123"
123 .toString(2); // "1111011"
123 .toString(16) // "7B"

valueOf

Number number.valueOf()

Meetod valueOf tagastab numbriobjekti primitiivse numbriväärtuse. Meetodi kasutamine numbriliteraalil ei ole väga mõistlik - meetod tagastab lihtsalt literaali enda väärtuse, seega omab meetod tähendust vaid numbriobjektide juures.

var nr = new Number(123);
alert(nr.valueOf()); // 123