我有一个代码,我得到了这样的数字:
92.682926829268
我想像这样剪掉它们:
92.68
这是我的代码:
<td><?php if (($row['TotalMatch']) > 10){ echo ($row['OK_05'] / $row['TotalMatch']) * 100; } ?></td>
我试着用地板和圆形但是我得到了我在帖子开头显示的那个例子(92.682926829268而不是92.68)
感谢您的关注
问候!
编辑您能举例说明我的代码吗?感谢
答案 0 :(得分:3)
答案 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
。因此,如果您需要确保始终显示两位小数,请不要使用round
。 round
是数学函数,而不是格式化函数。
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