有谁能告诉我为什么会这样,
$a = 0.000022
echo $a // 2.2E-5
我想看到的是0.000022
而不是2.2E-5
答案 0 :(得分:16)
指数形式是每个(?)编程语言使用的内部形式(至少CPU以这种方式“看到”浮点数)。使用sprintf()
格式化输出
echo sprintf('%f', $a);
// or (if you want to limit the number of fractional digits to lets say 6
echo sprintf('%.6f', $a);
有关格式参数的详细信息,请参阅Manual: sprintf()
。
答案 1 :(得分:2)
使用number_format()
功能
echo number_format($a,6,'.',',');
结果为0.000022
答案 2 :(得分:1)
试试这个:
function f2s(float $f) {
$s = (string)$f;
if (!strpos($s,"E")) return $s;
list($be,$ae)= explode("E",$s);
$fs = "%.".(string)(strlen(explode(".",$be)[1])+(abs($ae)-1))."f";
return sprintf($fs,$f);
}