问题描述
我的 PHP 脚本在某些情况下生成这种类型的编号,而预期是十进制。 如何修复它以便将来不会发生此问题?
数字结果: 1.0000789671421E+15
预期数量为: 1.00
解决方法
您需要指数符号中逗号后的 2 个位置。当已知十的幂时,您可以为此使用round。我会选择另一个例子来更好地说明这一点。
$float = 1.1230789671421E+15;
$round1 = round($float,-13);
var_dump($round1); //float(1.12E+15)
如果只对输出进行舍入,则可以使用 printf() 来完成。
printf('%1.2e',$float); //1.12e+15
如果不管 10 的幂,都需要一定的相对精度,可以按如下方式实现:
$float = 1.5670789671421E+12;
$round2 = (float)sprintf('%1.2e',$float);
printf('%1.6e',$round2); //1.570000e+12