如何使用 PHP 截取小数

How to cut decimal number using PHP

我有一个代码,我得到了一些这样的数字:

92.682926829268 

我想这样剪:

92.68

这是我的代码:

<td><?php if (($row['TotalMatch']) > 10){ echo ($row['OK_05'] / $row['TotalMatch']) * 100; }   ?></td>

我尝试使用 floor 和 round,但我得到了我在 post 开头展示的示例(92.682926829268 而不是 92.68)

感谢您的关注

此致!

EDIT 你能给我一个代码示例吗?谢谢

使用 sprintf() 格式化数字。

echo sprintf("%.2f", 92.682926829268);

示例: https://3v4l.org/U87T9

可以使用圆函数

$var = 92.682926829268;
$var = round($var, 2)

或使用sprintf(%.2f截数)

$var = sprintf("%.2f", $var);

尝试像下面这样使用 sprintf:

<?php
$mynumber = 98.343434;
echo sprintf('%.2f', $mynumber);    // this will output 98.34

您可以使用 bcdiv()

bcdiv($row['OK_05'], ($row['TotalMatch'] * 100), 2);

您要格式化的表达式是这样的:

($row['OK_05'] / $row['TotalMatch']) * 100

因此,无论您决定使用哪个函数,都需要绕过该表达式。

至于使用哪个函数,你需要select一个returns字符串,而不是浮点数。

如果您使用 round,并且您的表达式 returns 是一个四舍五入为小数点后有两个零的数字的浮点数,则结果中不会显示尾随零。例如,echo round(92.0006829268, 2) 将显示 92 而不是 92.00。因此,如果您需要确保始终显示两位小数,请不要使用 roundround 是数学函数,不是格式化函数。

floor 在这里真的没有用,因为它 returns 一个没有小数位的数字。


一个简单的方法是使用sprintf,如其他一些答案所示。

echo sprintf("%.2f", ($row['OK_05'] / $row['TotalMatch']) * 100);

sprintf的第一个参数是"%.2f",这是一个格式字符串,表示第二个参数应该显示为带两位小数的浮点数。第二个参数是你的表达。

按照其他答案中的建议使用 bcdiv 也可以,但它的工作方式与 sprintf 略有不同,并且在某些情况下会产生略微不同的结果。

sprintf 将四舍五入到指定的小数位数,例如

echo sprintf("%.2f", 926.89 / 10);   // outputs 92.69

bcdiv 将截断,因此

echo bcdiv(926.89, 10, 2);           // outputs 92.68

无论哪一个适合你,就去做。