具体有三种形式:IEEE754三种浮点数的格式参数类型 存储位数 偏移值数符(s)阶码(E)尾数(M)总位数十六进制短实数(Single,Float)1位8位23位32位0x7FH +127长实数(Double)1位11 位52位64位0x3FFH +1023临时实数(延伸双精确度,不常用)1位15位64位80位0x3FFFH +16383对于阶码为0或为255(2047)的情况,IEEE有特殊的规定:如果 E 是0 并且 M 是0,这个数±0(和符号位相关) 如果 E = 2 − 1 并且 M 是0,这个数是 ±无穷大(同样和符号位相关) 如果 E = 2 − 1 并且 M 非0,这个数表示为不是一个数(NaN)。标准浮点数的存储在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1。对于阶码E的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。例如:将数值-0.5按IEEE754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.510=-0.12=-1.0×2-12,这里s=1,M为全0,E-127=-1,E=12610=011111102,则存储形式为:1 01111110 000000=BE000000(16)这里不同的下标代表不同的进制。 语法定义 浮点数(也叫浮点数,双精度数或实数)可以用以下任何语法定义:形式上:LNUM [0-9]+DNUM ([0-9]*[/.]{LNUM}) | ({LNUM}[/.][0-9]*)EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM})转换为浮点数如果希望了解有关何时和如何将字符串转换成浮点数的信息,请查阅“将字符串转换为数值”一节。对于其它类型的值,其情况类似于先将值转换成整型,然后再转换成浮点。请参阅“转换为整型”一节以获取更多信息。自 php 5 起,如果试图将对象转换为浮点数,会发出一条通知。