JavaScript tal

JavaScript har kun én taltype.

Det er valgfrit, om man skriver tal med eller uden decimaltale.

JavaScript tal

Det er muligt at skrive JavaScript-værdier med eller uden decimalpunkt:

Eksempel

var x = 3.14;    // Tal med decimalpunkt
var y = 3;       // Tal uden decimalpunkt

Prøv det selv

Store eller små tal kan skrives som videnskabelig notation:

Eksempel

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

Prøv det selv

JavaScript's værdier er altid 64 bits flydende tal

I modsætning til mange andre programmeringssprog definerer JavaScript ikke forskellige typer tal, såsom heltal, korte, lange, flydende osv.

JavaScript's værdier gemmes altid som dobbeltpræcision float, ifølge den internationale IEEE 754 standard.

Dette format bruger 64 bits til at gemme værdier, hvor 0 til 51 gemmer tallene (fragmenter), 52 til 62 gemmer eksponenten, og 63 bit gemmer symbollet:

Værdi(aka Fragment/Mantissa) Eksponent Symbol
52 bits(0 - 51) 11 bits (52 - 62) 1 bit (63)

Præcision

Hele tal (uden eksponent eller videnskabelig notation) vil være præcise til 15 cifre.

Eksempel

var x = 999999999999999;   // x vil være 999999999999999
var y = 9999999999999999;  // y vil være 10000000000000000

Prøv det selv

Det maksimale antal decimaler er 17, men float's aritmetik er ikke altid 100% præcis:

Eksempel

var x = 0.2 + 0.1;         // x vil være 0.30000000000000004

Prøv det selv

Brug af multiplikation og division hjælper med at løse problemet ovenfor:

Eksempel

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x vil være 0.3

Prøv det selv

Tal og streng addering

Advarsel!!

JavaScript's addition og kædeudvidelse bruger +-operator.

Tal bruger addition. Strenger bruger kædeudvidelse.

Hvis du adderer to tal, vil resultatet være et tal:

Eksempel

var x = 10;
var y = 20;
var z = x + y;           // z vil være 30 (et tal)

Prøv det selv

Hvis du adderer to strenger, vil resultatet være en strengkæde:

Eksempel

var x = "10";
var y = "20";
var z = x + y;           // z will be 1020 (string)

Prøv det selv

Hvis du adderer et tal og en streng, vil resultatet også være en strengkæde:

Eksempel

var x = 10;
var y = "20";
var z = x + y;           // z vil være 1020 (en streng)

Prøv det selv

If you add a string and a number, the result is also string concatenation:

Eksempel

var x = "10";
var y = 20;
var z = x + y;           // z will be 1020 (string)

Prøv det selv

A common mistake is to think the result should be 30:

Eksempel

var x = 10;
var y = 20;
var z = "The result is: " + x + y;

Prøv det selv

A common mistake is to think the result should be 102030:

Eksempel

var x = 10;
var y = 20;
var z = "30";
var result = x + y + z;

Prøv det selv

JavaScript compiles from left to right.

Because x and y are both numbers, 10 + 20 will be added.

Because z is a string, 30 + "30" is concatenated.

Numeric string

JavaScript strings can contain numeric content:

var x = 100;         // x is a number
var y = "100";       // y is a string

In all numeric operations, JavaScript will try to convert strings to numbers:

This example runs as follows:

var x = "100";
var y = "10";
var z = x / y;       // z will be 10

Prøv det selv

This example will also run as follows:

var x = "100";
var y = "10";
var z = x * y;       // z will be 1000

Prøv det selv

This example runs as follows:

var x = "100";
var y = "10";
var z = x - y;      // z will be 90

Prøv det selv

But this example will not run as above:

var x = "100";
var y = "10";
var z = x + y;       // z will not be 110 (but 10010)

Prøv det selv

In the last example, JavaScript concatenated strings using the + operator.

NaN - Not a Number

NaN It is a reserved word in JavaScript, indicating that a number is not a valid number.

Trying to divide by a non-numeric string will result in NaN (Not a Number):

Eksempel

var x = 100 / "Apple";  // x will be NaN (Not a Number)

Prøv det selv

However, if the string contains a number, the result will be a number:

Eksempel

var x = 100 / "10";     // x will be 10

Prøv det selv

You can use the global JavaScript function isNaN() to determine if a value is a number:

Eksempel

var x = 100 / "Apple";
isNaN(x);               // Return true, because x is not a number

Prøv det selv

været forsigtig NaN。Hvis du bruger NaNså vil resultatet også være NaN

Eksempel

var x = NaN;
var y = 5;
var z = x + y;         // z vil være NaN

Prøv det selv

resultatet kan være en strengkæde:

Eksempel

var x = NaN;
var y = "5";
var z = x + y;         // z vil være NaN5

Prøv det selv

NaN er et tal,typeof NaN returnerer number

Eksempel

typeof NaN;             // Returnerer "number"

Prøv det selv

Infinity

Infinity eller -Infinity)er værdien, som JavaScript returnerer, når det beregner et tal og overskrider det maksimale mulige talområde.

Eksempel

var myNumber = 2;
while (myNumber != Infinity) {          // Udfør indtil Infinity
    myNumber = myNumber * myNumber;
}

Prøv det selv

Deling med 0 (nul) genererer også Infinity

Eksempel

var x =  2 / 0;          // x vil være Infinity
var y = -2 / 0;          // y vil være -Infinity

Prøv det selv

Infinity er et tal:typeOf Infinity returnerer number

Eksempel

typeof Infinity;        // Returnerer "number"

Prøv det selv

sekstaltal

JavaScript fortolker præfiks som 0x bogstaver som 0x betragtes som sekstaltal.

Eksempel

var x = 0xFF;             // x vil være 255.

Prøv det selv

Skriv aldrig tal med førende nuller (f.eks. 07).

Nogle versioner af JavaScript fortolker tal med førende nuller som oktal.

Standardmæssigt viser Javascript tal som ti-cifrede decimaltal.

Men du kan bruge toString() Metoden udskriver tallet som hexadecimalt, oktal eller binært.

Eksempel

var myNumber = 128;
myNumber.toString(16);     // Returnerer 80
myNumber.toString(8);      // Returnerer 200
myNumber.toString(2);      // Returnerer 10000000

Prøv det selv

Antal kan være et objekt

Normalt oprettes JavaScript-antal gennem litterære værdier: var x = 123

men det kan også gøres gennem nøgleord new defineret som objekt: var y = new Number(123)

Eksempel

var x = 123;
var y = new Number(123);
// typeof x returnerer number
// typeof y returnerer object

Prøv det selv

Opret ikke numeriske objekter. Dette kan forsinke udførelsen.

new Nøgleord gør kode kompleks og kan føre til uforudsete resultater:

Når man bruger == Lighedssymbolet gør tal, der ser ens ud, synes ens:

Eksempel

var x = 500;             
var y = new Number(500);
// (x == y) er true, fordi x og y har ens værdi

Prøv det selv

Når man bruger === Efter brug af lighedssymbolet, ændres lige tal til ulige, fordi === Operatorer kræver både type og værdi for at være ens.

Eksempel

var x = 500;             
var y = new Number(500);
// (x === y) er false, fordi x og y har forskellige typer

Prøv det selv

Selv værre. Objekter kan ikke sammenlignes:

Eksempel

var x = new Number(500);             
var y = new Number(500);
// (x == y) er false, fordi objekter ikke kan sammenlignes

Prøv det selv

JavaScript objekter kan ikke sammenlignes.