【问题标题】:how to fix the floating number for two decimal number in PHP? [closed]如何修复PHP中两位十进制数的浮点数? [关闭]
【发布时间】:2021-07-18 02:13:08
【问题描述】:

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

号码结果:1.0000789671421E+15

预期数字为: 1.00

【问题讨论】:

  • 1.00 万亿?因为这就是那个数字。 1.00 * 10^15
  • @Sammitch 我想知道如何修复这个舍入错误。我期待 1.00 的结果,结果却是这个疯狂的数字。
  • 这不是一个舍入错误,它是一个非常大的数字的替代表示。它实际上相当于整数1000078967142100。如果它应该等同于1,那么您还有其他问题。
  • 如何四舍五入到小数点后两位?
  • 这能回答你的问题吗? Show a number to two decimal places

标签: php decimal floating


【解决方案1】:

您希望指数符号中的逗号后有 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

【讨论】:

    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2010-09-22
    • 2016-01-11
    • 1970-01-01
    相关资源
    最近更新 更多