首页 > 解决方案 > 如何修复PHP中两位十进制数的浮点数?

问题描述

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

号码结果: 1.0000789671421E+15

预期数字为: 1.00

标签: phpdecimalfloating

解决方案


您需要指数符号中逗号后的 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

如果无论十次方如何都需要一定的相对精度,则可以按如下方式实现:

$float = 1.5670789671421E+12;

$round2 = (float)sprintf('%1.2e',$float);

printf('%1.6e',$round2);  //1.570000e+12

推荐阅读