Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中修复两个十进制数的浮点数?_Php_Decimal_Floating - Fatal编程技术网

如何在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) 如果只对输

我的PHP脚本在某些情况下生成这种类型的编号,而预期的编号是十进制的。 如何解决此问题,以便将来不会发生此问题

编号结果:
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