For faster navigation, this Iframe is preloading the Wikiwand page for 浮点数.

浮点数

维基百科,自由的百科全书

本条目存在以下问题,请协助改善本条目或在讨论页针对议题发表看法。 此条目没有列出任何参考或来源。 (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)也就是。依此类推二进制的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陷入巨大的窘态,创建召回项目来回收有问题的处理器。

相关条目

{{bottomLinkPreText}} {{bottomLinkText}}
浮点数
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.