fbpx
维基百科

浮点数

電腦科學中,浮點(英語:floating point,縮寫為FP)是一種對於實數的近似值數值表現法,由一个有效數字(即尾数)加上冪數來表示,通常是乘以某个基数的整数次指數得到。以這種表示法表示的數值,稱為浮点數floating-point number)。利用浮點進行運算,稱為浮点计算,這種运算通常伴随着因为无法精确表示而进行的近似或舍入

十進制浮点數的表示方式

計算機使用浮點數運算的主因,在於電腦使用二進位制的運算。例如:4÷2=2,4=100(2)、2=010(2),在二進位相當於退一位數。則1.0÷2=0.5=0.1(2)也就是。依此類推二進位的0.01(2)就是十進位==0.25。由於十進位制無法準確換算成二進位制的部分小數,如0.1,因此只能使用近似值的方式表達。

这种表示方法类似于基数为10的科学记数法,在計算機上,通常使用2為基數的幂數來表示。一个浮点数a由两个数me来表示:a = m × be。在任意一个这样的系统中,我们选择一个基數b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作正规化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。

這種表示法的設計,來自於對於值的表現範圍,與精密度之間的取捨:可以在某个固定长度的存储空间内表示出某個實數的近似值。例如,一个指数范围为±4的4位十进制浮点数可以用来表示43210,4.321或0.0004321,但是没有足够的精度来表示432.123和43212.3(必须近似为432.1和43210)。当然,实际使用的位数通常远大于4。

此外,浮点数表示法通常还包括一些特别的数值:+∞和−∞(正负无穷大)以及NaN('Not a Number')。无穷大用于数太大而无法表示的时候,NaN则指示非法操作或者无法定义的结果。

其中,无穷大,可表示为inf,在内存中的值是阶码为全1,尾数全0。而NaN在内存中的值则是阶码全1,尾数不全0。

计算机的浮点数

浮点指的是带有小数的数值,浮点运算即是小数的四则运算,常用来测量电脑运算速度。大部份计算机采用二進制(b=2)的表示方法。(bit)是衡量浮点数所需存储空间的单位,通常为32位或64位,分别被叫作单精度双精度。有一些计算机提供更大的浮点数,例如英特尔公司的浮点运算单元Intel8087协处理器(以及其被集成进x86处理器中的后代产品)提供80位长的浮点数,用于存储浮点运算的中间结果。还有一些系统提供128位的浮点数(通常用软件实现)。

浮点数的標準

在電腦使用的浮点数被电气电子工程师协会(IEEE)規範化為IEEE 754

举例

π的值可以表示为π = 3.1415926...10(十进制)。当在一个支持17位尾数的计算机中表示时,它会变为0.11001001000011111 × 22

准确性

由于浮点数不能表达所有实数,浮点运算与相应的数学运算有所差异,有时此差异极为显著。

比如,二进制浮点数不能表达0.1和0.01,0.1的平方既不是准确的0.01,也不是最接近0.01的可表达的数。单精度(24比特)浮点数表示0.1的结果为 , ,即

0.100000001490116119384765625

此数的平方是

0.010000000298023226097399174250313080847263336181640625

但最接近0.01的可表达的数是

0.009999999776482582092285156250

浮点数也不能表达圆周率 ,所以 不等于正无穷,也不会溢出。下面的C语言代码

double pi = 3.1415926535897932384626433832795; double z = tan(pi/2.0); 

的计算结果为16331239353195370.0,如果用单精度浮点数,则结果为−22877332.0。同样的, 

由于浮点数计算过程中丢失了精度,浮点运算的性质与数学运算有所不同。浮点加法和乘法不符合结合律分配律

事故

Intel Pentium CPU早期的60-100MHz P5版本在浮點運算單元有一個問題,在極少數情況下,會導致除法運算的精確度降低。這個缺陷於1994年被發現,變成如今廣為人知的Pentium FDIV bug,同時這一事件導致Intel陷入巨大的窘態,建立召回計畫來回收有問題的處理器。

相關條目

浮点数, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目没有列出任何参考或来源, 2012年6月28日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2022年3月7日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 在電腦科學中, 浮點, 英語, floating, point, 縮寫為fp, 是一種對於實數的近似值數值表現法, 由一. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目没有列出任何参考或来源 2012年6月28日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2022年3月7日 請按照校對指引 幫助编辑這個條目 幫助 討論 在電腦科學中 浮點 英語 floating point 縮寫為FP 是一種對於實數的近似值數值表現法 由一个有效數字 即尾数 加上冪數來表示 通常是乘以某个基数的整数次指數得到 以這種表示法表示的數值 稱為浮点數 floating point number 利用浮點進行運算 稱為浮点计算 這種运算通常伴随着因为无法精确表示而进行的近似或舍入 十進制浮点數的表示方式 計算機使用浮點數運算的主因 在於電腦使用二進位制的運算 例如 4 2 2 4 100 2 2 010 2 在二進位相當於退一位數 則1 0 2 0 5 0 1 2 也就是1 2 displaystyle frac 1 2 依此類推二進位的0 01 2 就是十進位1 2 2 displaystyle frac 1 2 2 1 4 displaystyle frac 1 4 0 25 由於十進位制無法準確換算成二進位制的部分小數 如0 1 因此只能使用近似值的方式表達 这种表示方法类似于基数为10的科学记数法 在計算機上 通常使用2為基數的幂數來表示 一个浮点数a由两个数m和e来表示 a m be 在任意一个这样的系统中 我们选择一个基數b 记数系统的基 和精度p 即使用多少位来存储 m 即尾数 是形如 d ddd ddd的p位数 每一位是一个介于0到b 1之间的整数 包括0和b 1 如果m的第一位是非0整数 m称作正规化的 有一些描述使用一个单独的符号位 s 代表 或者 来表示正负 这样m必须是正的 e是指数 這種表示法的設計 來自於對於值的表現範圍 與精密度之間的取捨 可以在某个固定长度的存储空间内表示出某個實數的近似值 例如 一个指数范围为 4的4位十进制浮点数可以用来表示43210 4 321或0 0004321 但是没有足够的精度来表示432 123和43212 3 必须近似为432 1和43210 当然 实际使用的位数通常远大于4 此外 浮点数表示法通常还包括一些特别的数值 和 正负无穷大 以及NaN Not a Number 无穷大用于数太大而无法表示的时候 NaN则指示非法操作或者无法定义的结果 其中 无穷大 可表示为inf 在内存中的值是阶码为全1 尾数全0 而NaN在内存中的值则是阶码全1 尾数不全0 目录 1 计算机的浮点数 2 浮点数的標準 3 举例 4 准确性 4 1 事故 5 相關條目计算机的浮点数 编辑浮点指的是带有小数的数值 浮点运算即是小数的四则运算 常用来测量电脑运算速度 大部份计算机采用二進制 b 2 的表示方法 位 bit 是衡量浮点数所需存储空间的单位 通常为32位或64位 分别被叫作单精度和双精度 有一些计算机提供更大的浮点数 例如英特尔公司的浮点运算单元Intel8087协处理器 以及其被集成进x86处理器中的后代产品 提供80位长的浮点数 用于存储浮点运算的中间结果 还有一些系统提供128位的浮点数 通常用软件实现 浮点数的標準 编辑主条目 IEEE 754 在電腦使用的浮点数被电气电子工程师协会 IEEE 規範化為IEEE 754 举例 编辑p的值可以表示为p 3 1415926 10 十进制 当在一个支持17位尾数的计算机中表示时 它会变为0 11001001000011111 22 准确性 编辑由于浮点数不能表达所有实数 浮点运算与相应的数学运算有所差异 有时此差异极为显著 比如 二进制浮点数不能表达0 1和0 01 0 1的平方既不是准确的0 01 也不是最接近0 01的可表达的数 单精度 24比特 浮点数表示0 1的结果为e 4 displaystyle e 4 s 110011001100110011001101 2 displaystyle s 110011001100110011001101 2 即 0 100000001490116119384765625此数的平方是 0 010000000298023226097399174250313080847263336181640625但最接近0 01的可表达的数是 0 009999999776482582092285156250浮点数也不能表达圆周率p displaystyle pi 所以tan p 2 displaystyle tan frac pi 2 不等于正无穷 也不会溢出 下面的C语言代码 double pi 3 1415926535897932384626433832795 double z tan pi 2 0 的计算结果为16331239353195370 0 如果用单精度浮点数 则结果为 22877332 0 同样的 sin p 0 displaystyle sin pi neq 0 由于浮点数计算过程中丢失了精度 浮点运算的性质与数学运算有所不同 浮点加法和乘法不符合结合律和分配律 事故 编辑 Intel Pentium CPU早期的60 100MHz P5版本在浮點運算單元有一個問題 在極少數情況下 會導致除法運算的精確度降低 這個缺陷於1994年被發現 變成如今廣為人知的Pentium FDIV bug 同時這一事件導致Intel陷入巨大的窘態 建立召回計畫來回收有問題的處理器 相關條目 编辑IEEE二進位浮點數算術標準 IEEE 754 單精度浮點數 雙精度浮點數 MIPS TOP500 灾难性抵消 取自 https zh wikipedia org w index php title 浮点数 amp oldid 76697250, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。