<?php
$a = ;
$b = e;
$c = E;
?>
正则表达示如下
浮点数 []+
双精度型 ([][]{LNUM}) | ({LNUM}[][]*)
指数表达式 [+]?(({LNUM} | {DNUM}) [eE][+]? {LNUM})
=========================
最大浮点数php代码如下:
<?php
function float_max($mul = $affine = ) {
$max = ; $omax = ;
while((string)$max != INF) { $omax = $max; $max *= $mul; }
for($i = ; $i < $affine; $i++) {
$pmax = ; $max = $omax;
while((string)$max != INF) {
$omax = $max;
$max += $pmax;
$pmax *= $mul;
}
}
return $omax;
}
echo "最大浮点数:" ;var_dump(float_max());
?>
=========================
结果如下(与平台相关)
最大浮点数:float(E+)
关于浮点数精度的注意事项:
简单的十进制分数如同 或 在转换为内部二进制的格式会丢失精度
例如floor((+)*) 通常会返回 而不是预期中的 因为该结果内部的表示其实是
就是不可能精确的用有限位数表达某些十进制分数
例如十进制的 / 变成了
所以
永远不要相信浮点数结果精确到了最后一位
也永远不要比较两个浮点数是否相等
如果确实需要更高的精度应该使用任意精度数学函数或者 gmp 函数
自 PHP 起如果试图将对象转换为浮点数会发出一条 E_NOTICE 错误