JavaScript-numerot

JavaScriptilla on vain yksi lukutyypi.

Numeron kirjoittamisessa desimaalipiste voi olla mukana tai ei.

JavaScript luku

JavaScript numbers can be written with or without a decimal point:

Esimerkki

var x = 3.14;    // A number with a decimal point
var y = 3;       // A number without a decimal point

Kokeile itse

Very large or very small numbers can be written in scientific notation:

Esimerkki

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

Kokeile itse

JavaScript numbers are always 64-bit floating-point numbers

Unlike many other programming languages, JavaScript does not define different types of numbers, such as integers, shorts, longs, floats, etc.

JavaScript numbers are always stored as double-precision floating-point numbers, according to the international IEEE 754 standard.

This format stores the number in 64 bits, where 0 to 51 store the digits (fraction), 52 to 62 store the exponent, and the 63rd bit stores the sign:

Value (also known as Fraction/Mantissa) Exponent Sign
52 bits(0 - 51) 11 bits (52 - 62) 1 bit (63)

Precision

Integers (not using exponent or scientific notation) are rounded to 15 digits.

Esimerkki

var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000

Kokeile itse

The maximum number of decimal places is 17, but floating-point arithmetic is not always 100% accurate:

Esimerkki

var x = 0.2 + 0.1;         // x will be 0.30000000000000004

Kokeile itse

Using multiplication and division helps to solve the above problem:

Esimerkki

var x = (0.2 * 10 + 0.1 * 10) / 10;       // x will be 0.3

Kokeile itse

Adding a number and a string

Warning!!

JavaScript's addition and concatenation (concatenation) both use the + operator.

Numbers use addition. Strings use concatenation.

If you add two numbers, the result will be a number:

Esimerkki

var x = 10;
var y = 20;
var z = x + y;           // z will be 30 (a number)

Kokeile itse

If you add two strings, the result will be a string concatenation:

Esimerkki

var x = "10";
var y = "20";
var z = x + y;           // z 将是 1020(字符串)

Kokeile itse

If you add a number and a string, the result will be a string concatenation:

Esimerkki

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

Kokeile itse

如果您对一个字符串和一个数字相加,结果也是字符串级联:

Esimerkki

var x = "10";
var y = 20;
var z = x + y;           // z 将是 1020(字符串)

Kokeile itse

常见的错误是认为结果应该是 30:

Esimerkki

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

Kokeile itse

常见的错误是认为结果应该是 102030:

Esimerkki

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

Kokeile itse

JavaScript 从左向右进行编译。

因为 x 和 y 都是数,10 + 20 将被相加。

因为 z 是字符串,30 + "30" 被级联。

数字字符串

JavaScript 字符串可以拥有数字内容:

var x = 100;         // x 是数字
var y = "100";       // y 是字符串

在所有数字运算中,JavaScript 会尝试将字符串转换为数字:

该例如此运行:

var x = "100";
var y = "10";
var z = x / y;       // z 将是 10

Kokeile itse

该例也将如此运行:

var x = "100";
var y = "10";
var z = x * y;       // z 将是 1000

Kokeile itse

该例如此运行:

var x = "100";
var y = "10";
var z = x - y;      // z 将是 90

Kokeile itse

但是该例不会如上例般运行:

var x = "100";
var y = "10";
var z = x + y;       // z 不会是 110(而是 10010)

Kokeile itse

在最后一个例子中,JavaScript 用 + 运算符对字符串进行了级联。

NaN - Ei-numero

NaN 属于 JavaScript 保留词,指示某个数不是合法数。

尝试用一个非数字字符串进行除法会得到 NaN(Not a Number):

Esimerkki

var x = 100 / "Apple";  // x 将是 NaN(Not a Number)

Kokeile itse

不过,假如字符串包含数值,则结果将是数:

Esimerkki

var x = 100 / "10";     // x 将是 10

Kokeile itse

您可使用全局 JavaScript 函数 isNaN() 来确定某个值是否是数:

Esimerkki

var x = 100 / "Apple";
isNaN(x);               // Palauttaa true, koska x ei ole luku

Kokeile itse

Ole varovainen NaN。Jos käytät matemaattisissa laskuissa NaNniin tuloksenkin tulee olemaan NaN:

Esimerkki

var x = NaN;
var y = 5;
var z = x + y;         // z tulee olemaan NaN

Kokeile itse

Tulos voi olla merkkijonkon yhdistelmä:

Esimerkki

var x = NaN;
var y = "5";
var z = x + y;         // z tulee olemaan NaN5

Kokeile itse

NaN On luku:typeof NaN Palauttaa number:

Esimerkki

typeof NaN;             // Palauttaa "number"

Kokeile itse

Infinity

Infinity tai -Infinity)on arvo, jonka JavaScript palauttaa, kun laskennassa ylitetään mahdollisimman suuri luku

Esimerkki

var myNumber = 2;
while (myNumber != Infinity) {          // Suoritetaan kunnes Infinity
    myNumber = myNumber * myNumber;
}

Kokeile itse

Jakaminen nollalla (nolla) luo myös Infinity:

Esimerkki

var x =  2 / 0;          // x tulee olemaan Infinity
var y = -2 / 0;          // y tulee olemaan -Infinity

Kokeile itse

Infinity On luku:typeOf Infinity Palauttaa number.

Esimerkki

typeof Infinity;        // Palauttaa "number"

Kokeile itse

heksadesimaaliseksi

JavaScript muuntaa etuliitteen 0x lukuja esitetään heksadesimaalina

Esimerkki

var x = 0xFF;             // x tulee olemaan 255

Kokeile itse

Älä koskaan kirjoita numeroita johtuvilla nollilla (esim. 07)

Joissakin JavaScript-versioissa johtuvat nollat tulkitaan oktaaliksi.

Oletusarvon mukaan JavaScript näyttää luvut desimaalina

Mutta voit käyttää toString() Metodi muuntaa luvun heksadesimaaliseksi, oktaaliseksi tai binääriseksi.

Esimerkki

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

Kokeile itse

Luku voi olla objekti

Yleensä JavaScript-luvut luodaan suoraan lukuilla: var x = 123

但是也可以通过关键词 Älä luo arvoobjekteja. Tämä hidastaa suorituskykyä. Mutta ne voidaan myös määrittää avainsanalla

Esimerkki

Määritetty objektina: var y = new Number(123)
var x = 123;
var y = new Number(123);
// typeof x palauttaa number

Kokeile itse

// typeof y palauttaa object

Älä luo arvoobjekteja. Tämä hidastaa suorituskykyä. new

// (x == y) on true, koska x ja y ovat yhtä arvoisia Avainsana monimutkaistaa koodia ja aiheuttaa joitakin odottamattomia tuloksia: ==

Esimerkki

var x = 500;             
var y = new Number(500);
Samansuhtaisuuslauseke, yhtä arvoiset luvut näyttävät yhtä arvoisilta:

Kokeile itse

// (x == y) on true, koska x ja y ovat yhtä arvoisia ==== Kun käytetään ==== Operatorit vaativat sekä tyypin että arvon olevan yhtä.

Esimerkki

var x = 500;             
var y = new Number(500);
// (x === y) on false, koska x ja y ovat eri tyyppiä

Kokeile itse

EVEN WORSE. Objektit eivät voi olla verrattavissa:

Esimerkki

var x = new Number(500);             
var y = new Number(500);
// (x == y) on false, koska objektit eivät voi olla verrattavissa

Kokeile itse

JavaScript-objektit eivät voi olla vertailtavissa.