JavaScript tal
- Forrige side JS string template
- Næste side JS BigInt
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
Store eller små tal kan skrives som videnskabelig notation:
Eksempel
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
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
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
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
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)
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)
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)
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)
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;
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;
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
This example will also run as follows:
var x = "100"; var y = "10"; var z = x * y; // z will be 1000
This example runs as follows:
var x = "100"; var y = "10"; var z = x - y; // z will be 90
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)
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)
However, if the string contains a number, the result will be a number:
Eksempel
var x = 100 / "10"; // x will be 10
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
været forsigtig NaN
。Hvis du bruger NaN
så vil resultatet også være NaN
:
Eksempel
var x = NaN; var y = 5; var z = x + y; // z vil være NaN
resultatet kan være en strengkæde:
Eksempel
var x = NaN; var y = "5"; var z = x + y; // z vil være NaN5
NaN
er et tal,typeof NaN
returnerer number
:
Eksempel
typeof NaN; // Returnerer "number"
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; }
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
Infinity
er et tal:typeOf Infinity
returnerer number
。
Eksempel
typeof Infinity; // Returnerer "number"
sekstaltal
JavaScript fortolker præfiks som 0x
bogstaver som 0x betragtes som sekstaltal.
Eksempel
var x = 0xFF; // x vil være 255.
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
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
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
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
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
JavaScript objekter kan ikke sammenlignes.
- Forrige side JS string template
- Næste side JS BigInt