Numbers

ค่าตัวเลขประกอบด้วยชุดอักขระที่เป็นตัวเลข เช่น

5

ประเภทข้อมูลจำนวนยังมีพร็อพเพอร์ตี้ส่วนกลางพิเศษบางส่วนที่ แสดงแนวคิดที่เป็นตัวเลข เช่น Infinity และ NaN ซึ่งเป็นความหมายของค่า "ไม่ใช่ตัวเลข" ซึ่งเป็นผลลัพธ์ของการพยายามคำนวณ การคำนวณค่าที่ไม่ใช่ตัวเลขได้

ออบเจ็กต์ตัวเลข

เมื่อมีการส่งค่าไปยังฟังก์ชัน Number() ระบบจะแปลงค่านั้นเป็น จำนวนที่เทียบเท่ากัน เช่น สตริงตัวเลขจะให้ผลลัพธ์เทียบเท่ากับ จำนวนพื้นฐาน:

Number( "10" );
> 10

การส่งค่า false หรือ null ไปยัง Number() จะแสดงผลลัพธ์ 0 และ true 1

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

หากไม่สามารถแปลงค่าได้ เช่น ในกรณีของ undefined หรือสตริง มีอักขระที่ไม่ใช่ตัวเลข ฟังก์ชัน Number จะแสดงผล NaN:

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

ตามที่อธิบายไว้ในการสืบทอดต้นแบบ คุณอาจไม่มีเหตุผลที่จะใช้อ็อบเจ็กต์ Number เป็น ตัวสร้าง เนื่องจากโค้ดจะสร้างออบเจ็กต์ Number แทนลิเทอรัลจำนวน

let numObject = new Number( 15 );

numObject;
> Number { 15 }

ออบเจ็กต์นี้ทำงานเป็นค่าที่กำหนดไว้สำหรับการดำเนินการทางคณิตศาสตร์ แต่ ไม่สามารถเปรียบเทียบความเท่าเทียมกันอย่างเคร่งครัดกับลิเทอรัลจำนวนเนื่องจากประเภทข้อมูล ไม่ตรงกัน โดยไม่ได้ให้ประโยชน์ในทางปฏิบัติมากกว่าค่าที่แท้จริง

let tenObject = new Number( 10 );

tenObject + 5;
> 15

tenObject === 10;
> false

ทศนิยมและจำนวนเต็ม

JavaScript มีประเภทตัวเลขเพียงประเภทเดียวคือ 64 บิต IEEE 754-1985 ความแม่นยำสองเท่า IEEE 754-1985 จำนวนทศนิยมระหว่าง -2^1024 และ 2^1024 ก่อนที่ JavaScript จะจัดเก็บตัวเลขใดๆ ไว้ในหน่วยความจำ จะแปลงจำนวนนั้นเป็นจำนวนจุดลอยตัวฐานสอง หรือที่เรียกว่าจำนวนลอย

พื้นที่เก็บข้อมูล 64 บิตนี้ (บิต "บวก" หรือ "ลบ" 1 บิตและ 11 บิตสำหรับ เลขชี้กำลัง และ 52 บิตสำหรับเศษส่วน) อาจทำให้เกิดข้อผิดพลาดด้านความแม่นยำกับตัวเลขใดก็ได้ ของตัวเลขที่ไม่อยู่ภายในช่วงที่อนุญาต ข้อจำกัดนี้เป็นลักษณะตามธรรมชาติ เป็นประเภทข้อมูลตัวเลขของ JavaScript

0.1 + 0.7
> 0.7999999999999999

คุณสามารถจัดเก็บค่าตัวเลขเป็นจำนวนเต็ม ซึ่งเป็นจำนวนทศนิยม ที่ไม่มีเศษส่วนระหว่าง -(2^53 − 1) ถึง 2^53 − 1 เพราะลอยและ จำนวนเต็มจะได้รับการจัดเก็บในลักษณะพื้นฐานแบบเดียวกัน และไม่มีความแตกต่างในทางปฏิบัติ การทำงานของหมายเลขเหล่านี้ แต่เราขอแนะนำให้ใช้จำนวนเต็มเมื่อใดก็ได้ เพื่อหลีกเลี่ยงข้อผิดพลาดด้านความแม่นยำได้

โอเปอเรเตอร์ของหมายเลข

เมื่อคุณใช้โอเปอเรเตอร์มาตรฐานทางคณิตศาสตร์กับตัวเลขพื้นฐาน ฟังก์ชัน ลำดับการคำนวณทางคณิตศาสตร์ ใช้: นิพจน์ใดๆ ที่อยู่ในวงเล็บจะได้รับการประเมินก่อน แล้วตามด้วย เลขชี้กำลัง การคูณ การหาร การบวก และการลบ

โอเปอเรเตอร์ ชื่อ คำอธิบาย การใช้งาน ผลลัพธ์
+ เป็นการเพิ่มเติม 2+2 4
- การลบ 4-2 2
* การคูณ 2*5 10
/ ดิวิชัน 10/5 2
++ การเพิ่ม บวกหนึ่งเป็นจำนวน 2++ 3
-- การลด ลบ 1 ออกจากตัวเลข 3-- 2
** เลขยกกำลัง แสดงผลลัพธ์ของการเพิ่ม
แรก ถูกตัวถูกดำเนินการยกกำลังของตัวถูกดำเนินการที่สอง
2**4 16
% อยู่ในอันดับเดิม แสดงเศษที่เหลือเมื่อ
ตัวถูกดำเนินการแรกหารด้วยตัวถูกดำเนินการที่สอง
12%5 2

นอกจากนี้ คุณยังสามารถใช้ตัวดำเนินการกำหนดทางคณิตศาสตร์เพื่อการคำนวณ ดำเนินการกับค่าของตัวแปรแล้วกำหนดให้ทันที ค่าที่คำนวณใหม่ไปยังตัวแปร

โอเปอเรเตอร์ ชื่อ การใช้งาน
+= การมอบหมายการเพิ่ม myValue += 2
-= การมอบหมายการลบ myValue -= 2
*= การกำหนดการคูณ myValue *= 2
/= การมอบหมายหน่วยงาน myValue /= 2
**= การกำหนดเลขยกกำลัง myValue **= 2
%= การมอบหมายส่วนที่เหลือ myValue %= 2

ค่าสัญลักษณ์

จำนวนเบื้องต้นยังใช้ได้กับกรณีพิเศษ 2-3 กรณีด้วย นั่นคือ "ไม่ใช่ตัวเลข" ค่า (NaN) และค่าที่แสดงถึงค่าอนันต์ที่อาจเป็นบวกก็ได้ (Infinity) หรือเชิงลบ (-Infinity)

คุณอาจพบ Infinity น้อยมากจากการหาร 0 หรือกรณี ที่ภาษาโปรแกรมส่วนใหญ่แสดงข้อผิดพลาดแทน

10 / 0
> Infinity

โปรดทราบว่า JavaScript คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ Infinity เป็นประเภทข้อมูลแบบตัวเลข แสดงแนวคิดของความไม่มีที่สิ้นสุด แต่ infinity ไม่มีความหมายพิเศษ:

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN (แปลว่า "ไม่ใช่ตัวเลข") แสดงบ่อยขึ้นในกรณีที่เป็นผลลัพธ์ของการดำเนินการทางคณิตศาสตร์ ไม่สามารถแสดงเป็นตัวเลข ตัวอย่างเช่น เนื่องจาก JavaScript จะพยายามอนุมาน ประเภทข้อมูลจากค่าและบริบท สัญพจน์สตริงที่มีเฉพาะตัวเลขเท่านั้น ที่ใช้ในการดำเนินการทางคณิตศาสตร์ได้

"2" * 2;
> 4

อย่างไรก็ตาม หากสตริงนั้นไม่สามารถแยกวิเคราะห์เป็นค่าตัวเลข คณิตศาสตร์ การดำเนินการจะเป็นผลลัพธ์ที่ไม่ใช่ตัวเลข:

"two" * 2;
> NaN

ระบบจะแสดงผล NaN ในกรณีที่ค่าที่ไม่ถูกต้องแสดงเป็นตัวเลข ในการดำเนินการทางคณิตศาสตร์ ตัวอย่างมีดังต่อไปนี้

  • แปลงตัวเลขไม่สำเร็จ (เช่น parseInt( undefined ))
  • การดำเนินการทางคณิตศาสตร์ที่ผลลัพธ์ไม่ใช่จำนวนจริง (เช่น 0 / 0, Math.sqrt( -10 ))
  • การดำเนินการทางคณิตศาสตร์ที่มีผลลัพธ์ไม่แน่นอน (0 * Infinity)
  • การดำเนินการทางคณิตศาสตร์ที่มี NaN (NaN + 2) อย่างชัดเจนหรือ ผลลัพธ์ NaN รายการ (2 * "string" / 2)

ตรวจสอบความเข้าใจ

ผลลัพธ์ของการส่ง false ไปยัง Number() คืออะไร

เท็จ
NaN
1
0

ผลลัพธ์ของการคำนวณทางคณิตศาสตร์ต่อไปนี้คืออะไร

"Six" * 3

0
2
จริง
18
NaN