JavaScript tal
- Previous page JS string template
- Next page JS BigInt
JavaScript har bara ett numeriskt typ.
Det är möjligt att skriva nummer med eller utan decimaltecken.
JavaScript Nummer
Det är möjligt att skriva JavaScripts numeriska värden både med och utan decimalpunkt:
Example
var x = 3.14; // Tal med decimalpunkt var y = 3; // Tal utan decimalpunkt
Stora eller små tal kan skrivas med vetenskaplig notation:
Example
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
JavaScripts numeriska värden är alltid 64-bitars flyttalsnummer
Och många andra programmeringsspråk, definierar JavaScript inte olika typer av nummer, som heltal, korta, långa, flyttalsnummer, etc.
JavaScripts numeriska värden lagras alltid som dubbelprecision flyttalsnummer, enligt internationella IEEE 754-standarden.
Denna format använder 64 bitar för att lagra numeriska värden, där 0 till 51 lagrar siffror (delar), 52 till 62 lagrar exponent och 63 bit lagrar tecken:
Värde(aka Fraction/Mantissa) | Exponent | Tecken |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Precision
Hela tal (utan index eller vetenskaplig notation) kommer att vara exakta till 15 siffror.
Example
var x = 999999999999999; // x kommer att vara 999999999999999 var y = 9999999999999999; // y kommer att vara 10000000000000000
Det största antalet decimaler är 17, men flyttalsaritmetiken är inte alltid 100% exakt:
Example
var x = 0.2 + 0.1; // x kommer att vara 0.30000000000000004
Att använda multiplikation och division hjälper till att lösa problemen ovan:
Example
var x = (0.2 * 10 + 0.1 * 10) / 10; // x kommer att vara 0.3
Tal och strängar som läggs till
Varning!!
JavaScripts addition och kettning (kombination) använder +-operatorn.
Tal används med addition. Strängar används med kettning.
Om du lägger till två tal, blir resultatet ett tal:
Example
var x = 10; var y = 20; var z = x + y; // z kommer att vara 30 (ett tal)
Om du lägger till två strängar, blir resultatet en strängkombination:
Example
var x = "10"; var y = "20"; var z = x + y; // z kommer att vara 1020 (en sträng)
Om du lägger till ett tal och en sträng, blir resultatet en strängkombination:
Example
var x = 10; var y = "20"; var z = x + y; // z kommer att vara 1020 (en sträng)
om du lägger till en sträng och ett tal, kommer resultatet också att vara en strängkaskad:
Example
var x = "10"; var y = 20; var z = x + y; // z kommer att vara 1020 (en sträng)
en vanlig misstag är att tro att resultatet skulle vara 30:
Example
var x = 10; var y = 20; var z = "The result is: " + x + y;
en vanlig misstag är att tro att resultatet skulle vara 102030:
Example
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript kompileras från vänster till höger.
eftersom både x och y är tal kommer 10 + 20 att adderas.
eftersom z är en sträng, kommer 30 + "30" att kaskaderas.
numeriska strängar
JavaScript-strängar kan innehålla numeriska värden:
var x = 100; // x är ett tal var y = "100"; // y är en sträng
i alla numeriska operationer försöker JavaScript att konvertera strängar till nummer:
detta exempel fungerar så här:
var x = "100"; var y = "10"; var z = x / y; // z kommer att vara 10
detta exempel kommer också att fungera så här:
var x = "100"; var y = "10"; var z = x * y; // z kommer att vara 1000
detta exempel fungerar så här:
var x = "100"; var y = "10"; var z = x - y; // z kommer att vara 90
men detta exempel kommer inte att fungera som ovan:
var x = "100"; var y = "10"; var z = x + y; // z kommer inte att vara 110 (utan 10010)
i det sista exemplet använde JavaScript +-operatorn för att kaskadera strängar.
NaN - inte ett tal
NaN
är en reservord i JavaScript, som indikerar att ett tal inte är ett giltigt tal.
att försöka använda en icke-numerisk sträng för division ger NaN (Not a Number):
Example
var x = 100 / "Apple"; // x kommer att vara NaN (Not a Number)
men om strängen innehåller ett numeriskt värde kommer resultatet att vara ett tal:
Example
var x = 100 / "10"; // x kommer att vara 10
Du kan använda den globala JavaScript-funktionen isNaN()
att bestämma om ett värde är ett tal:
Example
var x = 100 / "Apple"; isNaN(x); // Återger true, eftersom x inte är ett tal
varse dig NaN
。Om du använder NaN
då kommer resultatet också att vara NaN
:
Example
var x = NaN; var y = 5; var z = x + y; // z kommer att vara NaN
Resultatet kan vara en strängkoppling:
Example
var x = NaN; var y = "5"; var z = x + y; // z kommer att vara NaN5
NaN
är ett tal,typeof NaN
återger number
:
Example
typeof NaN; // Återger "number"
Infinity
Infinity
eller -Infinity
)är värdet som JavaScript returnerar när det beräknar ett tal och överstiger det maximala möjliga nummerintervallet.
Example
var myNumber = 2; while (myNumber != Infinity) { // Kör tills Infinity myNumber = myNumber * myNumber; }
Att dividera med 0 (noll) genererar också Infinity
:
Example
var x = 2 / 0; // x kommer att vara Infinity var y = -2 / 0; // y kommer att vara -Infinity
Infinity
är ett tal:typeOf Infinity
återger number
。
Example
typeof Infinity; // Återger "number"
hexadecimalt
JavaScript tolkar prefixet 0x
s numeriska konstanter tolkas som hexadecimalt.
Example
var x = 0xFF; // x kommer att vara 255.
Använd aldrig ledande noll när du skriver tal (t.ex. 07).
Några versioner av JavaScript tolkar tal med ledande noll som oktala.
Som standard visar Javascript tal som decimaltal.
Men du kan använda toString()
Metoden visar tal som hexadecimalt, oktalt eller binärt.
Example
var myNumber = 128; myNumber.toString(16); // Återger 80 myNumber.toString(8); // Återger 200 myNumber.toString(2); // Återger 10000000
Nummer kan vara objekt
Vanligtvis skapas JavaScript-nummer genom att använda litterala värden: var x = 123
But it can also be done through the keyword new
Defined as an object: var y = new Number(123)
Example
var x = 123; var y = new Number(123); // typeof x returns number // typeof y returns object
Please do not create number objects. This will slow down the execution speed.
new
Keywords complicate the code and produce some unexpected results:
When using ==
The numbers look equal when using the equality operator:
Example
var x = 500; var y = new Number(500); // (x == y) is true because x and y have equal values
When using ===
After the equality operator, the numbers that are equal become unequal because ===
Operators need both type and value to be equal.
Example
var x = 500; var y = new Number(500); // (x === y) is false because x and y have different types
Even worse. Objects cannot be compared:
Example
var x = new Number(500); var y = new Number(500); // (x == y) is false because objects cannot be compared
JavaScript objects cannot be compared.
- Previous page JS string template
- Next page JS BigInt