Number ng JavaScript
JavaScript 只有一种数值类型。
书写数值时带不带小数点均可。
JavaScript 数值
Ang pagpili ng format ng number sa JavaScript ay maaaring may decimal point o walang decimal point:
实例
var x = 3.14; // Number na may decimal point var y = 3; // Number na walang decimal point
Ang malakas o maliit na number ay maaring magsulat sa pamamagitan ng scientific notation:
实例
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
Ang number ng JavaScript ay palaging 64 na bit na floating point number
Hindi katulad ng maraming iba pang programming language, hindi nagpalagay ang JavaScript ng iba't ibang uri ng number, tulad ng integer, short, long, floating point, at iba pa.
Ang number ng JavaScript ay palaging ginagamit bilang double precision floating point number, ayon sa international IEEE 754 standard.
Ang format na ito ay gumagamit ng 64 na bit na storage ng number, kung saan ang 0 hanggang 51 ay maglalagay ng numero (fraction), 52 hanggang 62 ay maglalagay ng exponent, at 63 na bit ay maglalagay ng sign:
Value(aka Fraction/Mantissa) | Exponent | Sign |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Precision
Ang integer (hindi gumagamit ng exponent o scientific notation) ay maaaring maipakilala nang tumpak hanggang 15 na bit.
实例
var x = 999999999999999; // x ay magiging 999999999999999 var y = 9999999999999999; // y ay magiging 10000000000000000
Ang pinakamalaking decimal number ay 17 na bit, ngunit ang floating point arithmetic ay hindi palaging 100% na tumpak:
实例
var x = 0.2 + 0.1; // x ay magiging 0.30000000000000004
Ang paggamit ng multiplication at division ay makakatulong na malutas ang problema sa itaas:
实例
var x = (0.2 * 10 + 0.1 * 10) / 10; // x ay magiging 0.3
Number and string concatenation
Warning!!
Ang addition at concatenation ng JavaScript ay gumagamit ng + operator.
Ang numero ay gumagamit ng addition. Ang string ay gumagamit ng concatenation.
Kung ikaw ay magpapakabit ng dalawang numero, ang resulta ay magiging isang numero:
实例
var x = 10; var y = 20; var z = x + y; // z ay isang numero na 30
Kung ikaw ay magpapakabit ng dalawang string, ang resulta ay magiging string concatenation:
实例
var x = "10"; var y = "20"; var z = x + y; // Z ay magiging 1020 (string)
Kung ikaw ay magpapakabit ng isang numero at isang string, ang resulta ay magiging string concatenation:
实例
var x = 10; var y = "20"; var z = x + y; // z ay isang string na 1020
Kung isasama mo ang isang string at isang numero, ang resulta ay magiging pagkakasunod-sunod ng string din:
实例
var x = "10"; var y = 20; var z = x + y; // Z ay magiging 1020 (string)
Ang pangkaraniwang pagkakamali ay ang paniniwala na ang resulta ay dapat magiging 30:
实例
var x = 10; var y = 20; var z = "The result is: " + x + y;
Ang pangkaraniwang pagkakamali ay ang paniniwala na ang resulta ay dapat magiging 102030:
实例
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
Ang JavaScript ay gumagawa ng compilation mula sa kaliwa papasok sa kanan.
Dahil ang x at y ay numero, ang 10 + 20 ay magiging pinagsama-sama.
Dahil ang z ay string, ang 30 + "30" ay magiging pagkakasunod-sunod ng string.
String na Numero
Ang string na ginamit ng JavaScript ay maaaring magkaroon ng nilalaman ng numero:
var x = 100; // X ay numero var y = "100"; // Y ay string
Sa lahat ng numero operation, ang JavaScript ay susubok na konversihin ang string sa numero:
Ang halimbawa na ito ay magiging tulad nito:
var x = "100"; var y = "10"; var z = x / y; // Z ay magiging 10
Ang halimbawa na ito ay magiging tulad nito din:
var x = "100"; var y = "10"; var z = x * y; // Z ay magiging 1000
Ang halimbawa na ito ay magiging tulad nito:
var x = "100"; var y = "10"; var z = x - y; // Z ay magiging 90
Ngunit ang halimbawa na ito ay hindi gagana tulad ng nakalagay:
var x = "100"; var y = "10"; var z = x + y; // Z ay hindi magiging 110 (sa halip ay 10010)
Sa huling halimbawa, ang JavaScript ay gumamit ng + operator sa pagkakasunud-sunod ng string.
NaN - Hindi Numero
NaN
Ito ay pangalan ng palagayang-reserba sa JavaScript, na naglalarawan na ang isang numero ay hindi lehitimong numero.
Ang pagsubok gamitin ang isang hindi numero string sa paghahati ay magiging NaN (Not a Number):
实例
var x = 100 / "Apple"; // X ay magiging NaN (Not a Number)
Gayunpaman, kung ang string ay naglalaman ng numero, ang resulta ay magiging numero:
实例
var x = 100 / "10"; // X ay magiging 10
Maaari mong gamitin ang pangkalahatang JavaScript function isNaN()
Upang matukoy kung ang isang halaga ay numero:
实例
var x = 100 / "Apple"; isNaN(x); // Naglalabas ng totoo, dahil x ay hindi numero
mag-ingat NaN
。Kung gumagamit ka ng NaN
at pagkatapos, ang resulta ay magiging NaN
:
实例
var x = NaN; var y = 5; var z = x + y; // z ay magiging NaN
Ang resulta ay maaaring maging magkakasamang:
实例
var x = NaN; var y = "5"; var z = x + y; // z ay magiging NaN5
NaN
Ay bilang,typeof NaN
ibabalik number
:
实例
typeof NaN; // ibabalik "number"
Infinity
Infinity
(o -Infinity
)ay ang halaga na ibabalik ng Javascript kapag ang pagkalkula ng bilang ay lumampas sa pinakamataas na posibleng saklaw ng bilang.
实例
var myNumber = 2; while (myNumber != Infinity) { // ipapatakbo hanggang sa Infinity myNumber = myNumber * myNumber; }
Ang paghahati sa 0 (walang bayad) ay magbibigay din ng Infinity
:
实例
var x = 2 / 0; // x ay magiging Infinity var y = -2 / 0; // y ay magiging -Infinity
Infinity
Ay bilang:typeOf Infinity
ibabalik number
.
实例
typeof Infinity; // ibabalik "number"
hexadecimal
Ang Javascript ay magpapakita ng nangungunang prefix na 0x
ang konstante ng numero ay isinalang bilang hexadecimal.
实例
var x = 0xFF; // x ay magiging 255.
Huwag kailanman gumamit ng nangungunang nulo para sa bilang (halimbawa 07).
Ang ilang bersyon ng JavaScript ay maaaring isalin ang bilang na may awal na nangungunang nulo bilang octal.
Sa pamamagitan ng kawalan ng pagtatakda, ipinapakita ng Javascript ang bilang sa decimal decimal.
Ngunit kayo ay maaaring gamitin toString()
Ang paraan ay nagpapalabas ng bilang bilang hexadecimal, octal o binary.
实例
var myNumber = 128; myNumber.toString(16); // ibabalik 80 myNumber.toString(8); // ibabalik 200 myNumber.toString(2); // ibabalik 10000000
Ang numero ay maaaring maging isang bagay
Karaniwan, ang mga numero sa JavaScript ay ginawa sa pamamagitan ng literal: var x = 123
但是也可以通过关键词 new
定义为对象:var y = new Number(123)
实例
var x = 123; var y = new Number(123); // typeof x 返回 number // typeof y 返回 object
请不要创建数值对象。这样会拖慢执行速度。
new
关键词使代码复杂化,并产生某些无法预料的结果:
当使用 ==
相等运算符时,相等的数看上去相等:
实例
var x = 500; var y = new Number(500); // (x == y) 为 true,因为 x 和 y 有相等的值
当使用 =====
相等运算符后,相等的数变为不相等,因为 =====
运算符需要类型和值同时相等。
实例
var x = 500; var y = new Number(500); // (x === y) 为 false,因为 x 和 y 的类型不同
甚至更糟。对象无法进行对比:
实例
var x = new Number(500); var y = new Number(500); // (x == y) 为 false,因为对象无法比较
JavaScript 对象无法进行比较。