如何在PHP中修复两个十进制数的浮点数?
我的PHP脚本在某些情况下生成这种类型的编号,而预期的编号是十进制的。 如何解决此问题,以便将来不会发生此问题 编号结果:如何在PHP中修复两个十进制数的浮点数?,php,decimal,floating,Php,Decimal,Floating,我的PHP脚本在某些情况下生成这种类型的编号,而预期的编号是十进制的。 如何解决此问题,以便将来不会发生此问题 编号结果:1.0000789671421E+15 预期的数字为:1.00在指数表示法中,逗号后需要两个位置。当十的幂已知时,你可以使用圆形。我将选择另一个例子来更好地说明这一点 $float = 1.1230789671421E+15; $round1 = round($float,-13); var_dump($round1); //float(1.12E+15) 如果只对输
1.0000789671421E+15
预期的数字为:
1.00
在指数表示法中,逗号后需要两个位置。当十的幂已知时,你可以使用圆形。我将选择另一个例子来更好地说明这一点
$float = 1.1230789671421E+15;
$round1 = round($float,-13);
var_dump($round1); //float(1.12E+15)
如果只对输出进行舍入,则可以使用
如果无论十的幂次是多少,都需要一定的相对精度,则可按如下方式实现:
$float = 1.5670789671421E+12;
$round2 = (float)sprintf('%1.2e',$float);
printf('%1.6e',$round2); //1.570000e+12
比如说100万亿?因为那就是那个数字
1.00*10^15
@Sammitch我想知道如何修复这个舍入错误。我期待1.00的结果,但结果却是这个疯狂的数字。这不是一个取整错误,而是一个非常大的数字的替代表示。它实际上相当于整数1000078967142100
。如果它应该等同于1
你还有其他问题。如何舍入到小数点后2位?这是否回答了你的问题?
$float = 1.5670789671421E+12;
$round2 = (float)sprintf('%1.2e',$float);
printf('%1.6e',$round2); //1.570000e+12