JavaScript tal

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

Try it yourself

Stora eller små tal kan skrivas med vetenskaplig notation:

Example

var x = 123e5;    // 12300000
var y = 123e-5;   // 0.00123

Try it yourself

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

Try it yourself

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

Try it yourself

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

Try it yourself

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)

Try it yourself

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)

Try it yourself

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)

Try it yourself

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)

Try it yourself

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;

Try it yourself

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;

Try it yourself

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

Try it yourself

detta exempel kommer också att fungera så här:

var x = "100";
var y = "10";
var z = x * y; // z kommer att vara 1000

Try it yourself

detta exempel fungerar så här:

var x = "100";
var y = "10";
var z = x - y; // z kommer att vara 90

Try it yourself

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)

Try it yourself

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)

Try it yourself

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

Try it yourself

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

Try it yourself

varse dig NaN。Om du använder NaNdå kommer resultatet också att vara NaN

Example

var x = NaN;
var y = 5;
var z = x + y;         // z kommer att vara NaN

Try it yourself

Resultatet kan vara en strängkoppling:

Example

var x = NaN;
var y = "5";
var z = x + y;         // z kommer att vara NaN5

Try it yourself

NaN är ett tal,typeof NaN återger number

Example

typeof NaN;             // Återger "number"

Try it yourself

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;
}

Try it yourself

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

Try it yourself

Infinity är ett tal:typeOf Infinity återger number

Example

typeof Infinity;        // Återger "number"

Try it yourself

hexadecimalt

JavaScript tolkar prefixet 0x s numeriska konstanter tolkas som hexadecimalt.

Example

var x = 0xFF;             // x kommer att vara 255.

Try it yourself

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

Try it yourself

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

Try it yourself

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

Try it yourself

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

Try it yourself

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

Try it yourself

JavaScript objects cannot be compared.