ตัวเลขจาวาสคริปต์
JavaScript มีตัวเลขเพียงประเภทเดียวเท่านั้น สามารถเขียนตัวเลขโดยมีหรือไม่มีทศนิยมก็ได้
ตัวอย่าง
let x = 3.14; // A number with decimals
let y = 3; // A number without decimals
สามารถเขียนตัวเลขขนาดใหญ่พิเศษหรือเล็กพิเศษด้วยสัญกรณ์วิทยาศาสตร์ (เลขชี้กำลัง):
ตัวอย่าง
let x = 123e5; // 12300000
let y = 123e-5; // 0.00123
หมายเลข JavaScript เป็นจุดลอยตัว 64 บิตเสมอ
JavaScript ไม่ได้กำหนดประเภทของตัวเลขต่างจากภาษาโปรแกรมอื่นๆ มากมาย เช่น จำนวนเต็ม สั้น ยาว จุดลอยตัว เป็นต้น
หมายเลข JavaScript จะถูกเก็บไว้เป็นตัวเลขทศนิยมที่มีความแม่นยำสองเท่า ตามมาตรฐาน IEEE 754 สากล
รูปแบบนี้เก็บตัวเลขใน 64 บิต โดยที่ตัวเลข (เศษส่วน) จะถูกเก็บไว้ในบิต 0 ถึง 51 เลขชี้กำลังในบิต 52 ถึง 62 และเครื่องหมายในบิต 63:
ค่า (aka Fraction/Mantissa) | เลขชี้กำลัง | เข้าสู่ระบบ |
---|---|---|
52 บิต (0 - 51) | 11 บิต (52 - 62) | 1 บิต (63) |
ความแม่นยำของจำนวนเต็ม
จำนวนเต็ม (ตัวเลขที่ไม่มีจุดหรือเลขชี้กำลัง) มีความแม่นยำสูงสุด 15 หลัก
ตัวอย่าง
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
จำนวนทศนิยมสูงสุดคือ 17
ความแม่นยำแบบลอยตัว
เลขทศนิยมไม่แม่นยำ 100% เสมอไป:
let x = 0.2 + 0.1;
เพื่อแก้ปัญหาข้างต้น จะช่วยคูณและหาร:
let x = (0.2 * 10 + 0.1 * 10) / 10;
การเพิ่มตัวเลขและสตริง
คำเตือน !!
JavaScript ใช้ตัวดำเนินการ + สำหรับทั้งการเพิ่มและการต่อ
มีการเพิ่มตัวเลข สตริงถูกต่อกัน
หากคุณบวกตัวเลขสองตัว ผลลัพธ์จะเป็นตัวเลข:
ตัวอย่าง
let x = 10;
let y = 20;
let z = x + y;
หากคุณเพิ่มสองสตริง ผลลัพธ์จะเป็นการต่อสตริง:
ตัวอย่าง
let x = "10";
let y = "20";
let z = x + y;
หากคุณเพิ่มตัวเลขและสตริง ผลลัพธ์จะเป็นการต่อสตริง:
ตัวอย่าง
let x = 10;
let y = "20";
let z = x + y;
หากคุณเพิ่มสตริงและตัวเลข ผลลัพธ์จะเป็นการรวมสตริง:
ตัวอย่าง
let x = "10";
let y = 20;
let z = x + y;
ข้อผิดพลาดทั่วไปคือการคาดหวังว่าผลลัพธ์นี้จะเท่ากับ 30:
ตัวอย่าง
let x = 10;
let y = 20;
let z = "The result is: " + x + y;
ข้อผิดพลาดทั่วไปคือการคาดหวังผลลัพธ์นี้เป็น 102030:
ตัวอย่าง
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
ล่าม JavaScript ทำงานจากซ้ายไปขวา
เพิ่ม 10 + 20 แรกเนื่องจาก x และ y เป็นตัวเลขทั้งคู่
จากนั้น 30 + "30" จะถูกต่อกันเพราะ z เป็นสตริง
สตริงตัวเลข
สตริง JavaScript สามารถมีเนื้อหาที่เป็นตัวเลขได้:
let x = 100; // x is a number
let y = "100"; // y is a
string
JavaScript จะพยายามแปลงสตริงเป็นตัวเลขในการดำเนินการที่เป็นตัวเลขทั้งหมด:
สิ่งนี้จะได้ผล:
let x = "100";
let y = "10";
let z = x / y;
สิ่งนี้จะได้ผลเช่นกัน:
let x = "100";
let y = "10";
let z = x * y;
และสิ่งนี้จะได้ผล:
let x = "100";
let y = "10";
let z = x - y;
แต่สิ่งนี้จะไม่ทำงาน:
let x = "100";
let y = "10";
let z = x + y;
ในตัวอย่างสุดท้าย JavaScript ใช้ตัวดำเนินการ + เพื่อเชื่อมสตริง
น่าน - ไม่ใช่ตัวเลข
NaN
เป็นคำสงวน JavaScript ที่ระบุว่าตัวเลขไม่ใช่ตัวเลขตามกฎหมาย
การพยายามทำเลขคณิตด้วยสตริงที่ไม่ใช่ตัวเลขจะส่งผลให้NaN
(ไม่ใช่ตัวเลข):
ตัวอย่าง
let x = 100 / "Apple";
อย่างไรก็ตาม หากสตริงมีค่าตัวเลข ผลลัพธ์จะเป็นตัวเลข:
ตัวอย่าง
let x = 100 / "10";
คุณสามารถใช้ฟังก์ชัน Global JavaScript isNaN()
เพื่อดูว่าค่าใดไม่ใช่ตัวเลขหรือไม่:
ตัวอย่าง
let x = 100 / "Apple";
isNaN(x);
ระวังNaN
. หากคุณใช้NaN
ในการดำเนินการทางคณิตศาสตร์ ผลลัพธ์จะเป็นNaN
:
ตัวอย่าง
let x = NaN;
let y = 5;
let z = x + y;
หรือผลลัพธ์อาจเป็นการต่อกันเช่น NaN5:
ตัวอย่าง
let x = NaN;
let y = "5";
let z = x + y;
NaN
เป็นตัวเลข: typeof NaN
return number
:
ตัวอย่าง
typeof NaN;
อินฟินิตี้
Infinity
(หรือ-Infinity
) คือค่าที่ JavaScript จะส่งกลับหากคุณคำนวณตัวเลขนอกจำนวนที่มากที่สุด
ตัวอย่าง
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
หารด้วย 0 (ศูนย์) ยังสร้างInfinity
:
ตัวอย่าง
let x = 2 / 0;
let y = -2 / 0;
Infinity
เป็นตัวเลข: typeof Infinity
return number
.
ตัวอย่าง
typeof Infinity;
เลขฐานสิบหก
JavaScript ตีความค่าคงที่ตัวเลขเป็นเลขฐานสิบหกหากนำหน้าด้วย 0x
ตัวอย่าง
let x = 0xFF;
อย่าเขียนตัวเลขที่มีศูนย์นำหน้า (เช่น 07)
JavaScript บางเวอร์ชันตีความตัวเลขเป็นฐานแปดหากเขียนด้วยศูนย์นำหน้า
ตามค่าเริ่มต้น JavaScript จะแสดงตัวเลขเป็นทศนิยมฐาน 10
แต่คุณสามารถใช้ วิธีการเพื่อส่ง ออกtoString()
ตัวเลขจากฐาน 2
ถึงฐาน 36
เลขฐาน สิบหกเป็นฐาน 16 ทศนิยมเป็นฐาน10 เลขฐาน แปดคือฐาน 8 ไบนารีเป็นฐาน 2
ตัวอย่าง
let myNumber = 32;
myNumber.toString(10);
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(8);
myNumber.toString(2);
JavaScript Numbers เป็นวัตถุ
โดยปกติตัวเลข JavaScript จะเป็นค่าดั้งเดิมที่สร้างจากตัวอักษร:
let x = 123;
แต่ตัวเลขยังสามารถกำหนดเป็นวัตถุด้วยคำหลักnew
:
let y = new Number(123);
ตัวอย่าง
let x = 123;
let y = new Number(123);
อย่าสร้างวัตถุตัวเลข
คีย์เวิร์ด ทำให้new
โค้ดซับซ้อนและทำให้ความเร็วในการดำเนินการช้าลง
Number Objects สามารถสร้างผลลัพธ์ที่ไม่คาดคิดได้:
เมื่อใช้ตัว==
ดำเนินการ x และ y จะเท่ากัน :
let x = 500;
let y = new Number(500);
เมื่อใช้ตัว===
ดำเนินการ x และ y ไม่เท่ากัน
let x = 500;
let y = new Number(500);
สังเกตความแตกต่างระหว่าง(x==y)
และ(x===y)
.
(x == y)
จริงหรือเท็จ?
let x = new Number(500);
let y = new Number(500);
(x === y)
จริงหรือเท็จ?
let x = new Number(500);
let y = new Number(500);
Comparing two JavaScript objects always returns false.
Complete JavaScript Number Reference
For a complete Number reference, visit our:
Complete JavaScript Number Reference.
The reference contains descriptions and examples of all Number properties and methods.