如何使用PHP删除十进制数

时间:2017-02-14 17:16:07

标签: php decimal rounding

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

92.682926829268 

我想像这样剪掉它们:

92.68

这是我的代码:

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

我试着用地板和圆形但是我得到了我在帖子开头显示的那个例子(92.682926829268而不是92.68)

感谢您的关注

问候!

编辑您能举例说明我的代码吗?感谢

5 个答案:

答案 0 :(得分:3)

使用sprintf()格式化数字。

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

实施例: https://3v4l.org/U87T9

答案 1 :(得分:2)

您可以使用圆形功能

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

或者使用sprintf(%.2f削减数字)

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

答案 2 :(得分:2)

您尝试格式化的表达方式为:

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

因此,无论您决定使用哪种功能都需要绕过该表达式。

至于要使用哪个函数,您需要选择一个返回字符串的函数,而不是float。

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

floor在这里根本没用,因为它返回一个没有小数位的数字。

一种简单的方法是使用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

无论哪一个适合你,都要这样做。

答案 3 :(得分:0)

您可以使用bcdiv()

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

答案 4 :(得分:-1)

尝试使用如下的sprintf:

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