用于舍入小数的PHP代码

时间:2013-09-28 09:09:45

标签: php

我正在使用

$p1 = 66.97;

$price1  = $row['Value']*$p1;
$price1 = number_format($price1, 2, '.', '');

进行简单的计算,然后将价格显示为2位小数。这很好用。我想将结果四舍五入到最近的.05。因此18.93将是18.9519.57将是19.60等等。任何有关此问题的想法 - 我都在努力。感谢。

5 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

$price = ceil($p1*20)/20;

你需要向上舍入到0.05; ceil通常向上舍入到1;所以你需要将你的数字乘以20(1/0.05 = 20)以允许ceil做你想要的,然后除以你想出的数字;

注意浮动算术,你的结果可能真的像12.949999999999999999999而不是12.95;因此,您应该将其转换为sprintf('%.2f', $price)number_format字符串,如示例中所示

答案 1 :(得分:0)

将你的答案乘以100,然后用5进行模除法。如果余数小于3,则减去余数,否则加(5 - 余数)。接下来,除以100得到最终结果。

答案 2 :(得分:0)

尝试:

function roundUpToAny($n,$x=5) {
    return round(($n+$x/2)/$x)*$x;
}

i.e.:

echo '52 rounded to the nearest 5 is ' . roundUpToAny(52,5) . '<br />';
// returns '52 rounded to the nearest 5 is 55'

答案 3 :(得分:0)

$price = ceil($price1 * 20) / 20;

答案 4 :(得分:0)

使用以下代码:

// First, multiply by 100
$price1 = $price1 * 100;
// Then, check if remainder of division by 5 is more than zero
if (($price1 % 5) > 0) {
    // If so, substract remainder and add 5
    $price1 = $price1 - ($price1 % 5) + 5;
}
// Then, divide by 100 again
$price1 = $price1 / 100;