1

从 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 美分?

4

3 回答 3

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的值

于 2012-03-30T12:28:52.497 回答
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.055.

于 2012-03-30T12:39:25.137 回答
0

由于 ceil() 和 floor() 没有这种精度,您可以将结果相乘然后再除。

于 2012-03-30T12:32:04.487 回答