ผู้ใช้:Zyaxious/drafts/จำนวนจุดลอยตัวความแม่นยำหนึ่งเท่า
นี่คือหน้าทดลองเขียนของ Zyaxious หน้าทดลองเขียนเป็นหน้าย่อยของหน้าผู้ใช้ ซึ่งผู้ใช้มีไว้ทดลองเขียนหรือไว้พัฒนาหน้าต่าง ๆ แต่นี่ไม่ใช่หน้าบทความสารานุกรม ทดลองเขียนได้ที่นี่ หน้าทดลองเขียนอื่น ๆ: หน้าทดลองเขียนหลัก |
จำนวนจุดลอยตัวความแม่นยำหนึ่งเท่า เป็นจำนวนตัวเลขคอมพิวเตอร์ชนิดหนึ่ง โดยปกติจะใช้พื้นที่จำนวน 32 บิตในหน่วยความจำคอมพิวเตอร์ ซึ่งใช้แทนจำนวนของค่าตัวเลขที่ไม่คงตัว โดยใช้จุดเลขฐานลอยตัวในการระบุขนาดของระยะช่วงตัวเลข
ตัวแปรจำนวนจุดลอยตัวสามารถแทนจำนวนที่มีระยะช่วงตัวเลขที่กว้างกว่าตัวแปรจำนวนจุดคงตัว โดยที่มีขนาดบิตเท่ากัน แต่จะทำให้สูญเสียความแม่นยำของช่วงระยะไปด้วย ตัวแปรจำนวนเต็มมีเครื่องหมายขนาด 32 บิต มีค่าสูงสุดที่ 231 − 1 = 2,147,483,647 ในขณะที่ตัวแปรจำนวนจุดลอยตัวฐานสองแบบ IEEE 754 ขนาด 32 บิต มีค่าสูงสุดที่ (2 − 2−23) × 2127 ≈ 3.4028235 × 1038 จำนวนเต็มใดที่มีทศนิยมไม่เกินเจ็ดหลัก และจำนวนเต็มใดที่สามารถแทนด้วย 2n โดยที่ n มีค่าเท่ากับ −149 ≤ n ≤ 127 นั้น จะสามารถแปลงให้เป็นค่าตัวเลขจำนวนจุดลอยตัวความแม่นยำหนึ่งเท่าแบบ IEEE 754 โดยไม่สูญเสียความแม่นยำของช่วงระยะ
ในมาตรฐาน IEEE 754-2008 จำนวนฐานสองขนาด 32 บิต มีชื่ออย่างเป็นทางการว่า binary32 และมีชื่อว่า single ใน IEEE 754-1985 โดย IEEE 754 ได้กำหนดประเภทจำนวนจุดลอยตัวเพิ่มเติม เช่น จำนวนฐานสองความแม่นยำสองเท่าขนาด 64 บิต และจำนวนฐานสิบในภายหลัง
ภาษาโปรแกรมแรกที่มีชนิดข้อมูลจำนวนจุดลอยตัวความแม่นยำหนึ่งและสองเท่า คือ ภาษาฟอร์แทรน ก่อนที่มาตรฐานของ IEEE 754-1985 จะได้รับการรองรับอย่างแพร่หลายนั้น การแทนค่าและลักษณะของชนิดข้อมูลจำนวนจุดลอยตัวนั้น ขึ้นอยู่กับเครื่องคอมพิวเตอร์และการตัดสินใจของนักออกแบบภาษาโปรแกรม
จำนวนจุดลอยตัวความแม่นยำหนึ่งเท่า ถูกกำหนดให้มีชื่อว่า REAL ในภาษาฟอร์แทรน SINGLE-FLOAT ในภาษาคอมมอนลิสป์ float ในภาษาซี ภาษาซี++ ภาษาซีชาร์ป และภาษาจาวา Float ในภาษาแฮสเคิลและภาษาสวิฟต์ และ Single ในภาษาอ็อบเจกต์ปาสกาล ภาษาวิชวลเบสิก และภาษาแมตแล็บ แต่สำหรับ float ในภาษาไพธอน ภาษารูบี ภาษาพีเอชพี และภาษาโอแคเมิล และ single ในอ็อกเตฟรุ่นก่อน 3.2 จะใช้แทนค่าจำนวนจุดลอยตัวความแม่นยำสองเท่าแทน ส่วนในภาษาโพสต์สคริปต์ และในระบบฝังตัวส่วนใหญ่ รองรับเพียงความแม่นยำหนึ่งเท่าเท่านั้น
มาตรฐาน IEEE 754: binary32[แก้]
มาตรฐาน IEEE 754 กำนหดให้ binary32 ประกอบด้วย:
- บิตเครื่องหมาย: 1 บิต
- เลขชี้กำลัง: 8 บิต
- เลขนัยสำคัญ: 24 บิต (จัดเก็บจริง 23 บิต)
การกำหนดรูปแบบของจำนวนนี้ ทำให้มีความแม่นยำระยะช่วงทศนิยมที่ 6 ถึง 9 หลัก หากจำนวนฐานสิบที่มีความยาวของทศนิยมไม่เกิน 6 หลัก ถูกแปลงให้เป็นจำนวนจุดลอยตัวความแม่นยำหนึ่งเท่าแบบ IEEE 754 แล้วแปลงกลับมาเป็นจำนวนฐานสิบที่มีความยาวของทศนิยมเท่ากันนั้น ผลลัพธ์ที่ได้จะต้องมีค่าเท่ากับตัวเลขฐานสิบเดิม ส่วนจำนวนจุดลอยตัวความแม่นยำหนึ่งเท่าแบบ IEEE 754 ที่ถูกแปลงให้เป็นจำนวนฐานสิบที่มีความยาวของทศนิยมอย่างน้อย 9 หลัก แล้วแปลงกลับมาเป็นจำนวนจุดลอยตัวความแม่นยำหนึ่งเท่านั้น ผลลัพธ์ที่ได้จะต้องมีค่าเท่ากับจำนวนเดิม[1]
บิตเครื่องหมาย จะเป็นตัวกำหนดเครื่องหมายให้กับเลขนัยสำคัญและค่าที่แทนจำนวน
- ↑ William Kahan (1 October 1997). "Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic" (PDF). p. 4.