浮點數
浮點數(粵拼:fau4 dim2 sou3;英文:floating point number)喺程式編寫上係種成日用嘅資料類型,指件資料表示緊一個可以係小數嘅實數,但係記錄嘅方式係主要以二進制嘅科學記數法,只用有限嘅有效數字來記,所以唔能夠準確咁記錄任意嘅實數。
所謂浮點係指冪嘅數值係因應記錄嘅實數而定,並冇一個固定嘅冪。
因為二進制唔能夠準確記錄十進制嘅小數,有啲例如 0.1 之類,喺十進制係有限小數,但係二進制之下就變成無限小數;由於浮點數只有有限嘅有效數字,呢啲數值用浮點數喺二進制之下冇可能準確記錄。
相對於浮點數嘅實數資料類型叫定點數。
基本原理
編輯浮點數嘅基本原理係將實數嘅數值好似科學記數法咁拆成 mantissa 同冪兩部份,記錄喺有限嘅位元入面,表示成 ,當中 , ;或者拆成 sign、mantissa 同冪三部份,用一個位元記個數係正定負,然後將剩返嘅位元分畀 mantissa 同冪來用,任意一個數值就表示成 ,當中 , , 。 通常係2(二進制),但係亦都有可能係其他例如10(十進制)、8(八進制)或者16(十六進制)。
例如,如果我哋有16個位元可以用,用拆開三部份嘅方法,用咗一個位元記 sign,如果用7個位元記冪,就仲有8個位元記 mantissa,再如果係用二進制,冪嘅值就限咗喺7個位元可以表示嘅整數(例如 −64 至 63),任何表示嘅實數亦都固定咗有8個(二進制嘅)有效數字。
IEEE 標準
編輯目前常用嘅浮點數格式都會跟 IEEE 754 標準。喺呢個標準之下,除咗表示實數之外,浮點數亦都可以表示幾個非數值,例如 「無限大」。
睇埋
編輯參考
編輯- Muller, J. M., Brisebarre, N., De Dinechin, F., Jeannerod, C. P., Lefevre, V., Melquiond, G., ... & Torres, S. (2018). Handbook of floating-point arithmetic (pp. 44-91). Basel, Switzerland:: Birkhäuser.