PHP圆形&天花板没有正确解析数据

时间:2012-03-30 12:17:12

标签: php xml math rounding ceil

从xml文件中提取然后分配给变量但输出错误的数字。我不太清楚为什么或如何绕过它。这是一个例子。

$pricing_high = 1.15;
echo $pricing_high;

显然显示1.15。但是,当我这样分配时:

$price = ceil($pricing_high / 0.05) * 0.05;
echo $price;

显示2。

$price = round($pricing_high / 0.05) * 0.05;
echo $price;

显示1。

如果这样传递数字,我如何正确地将数字四舍五入到最接近的5美分?

3 个答案:

答案 0 :(得分:2)

从圆函数的PHP文档开始:

http://php.net/manual/en/function.round.php

您可以将精度指定为第二个参数:

$pricing_high = 1.15;
$price = round($pricing_high / 0.05, 2) * 0.05;
echo $price;

注意第二个参数2的值

答案 1 :(得分:1)

1.15 = 1美元和15美分?如果是这样的话:

echo sprintf('%.2f', round($price / 0.05) * 0.05); // Rounds to nearest
echo sprintf('%.2f', ceil($price / 0.05) * 0.05); // Rounds up

试验:

$price = 1.13;

echo sprintf('%.2f', round($price / 0.05) * 0.05); // Outputs: 1.15
echo sprintf('%.2f', ceil($price / 0.05) * 0.05); // Outputs: 1.15

$price = 1.12;

echo sprintf('%.2f', round($price / 0.05) * 0.05); // Outputs: 1.10
echo sprintf('%.2f', ceil($price / 0.05) * 0.05); // Outputs: 1.15

如果1.15 = 1.15美分,则将0.05替换为5

答案 2 :(得分:0)

由于ceil()和floor()没有这个精度,你可以将你的结果乘以并将其除以。