帮助PHP函数,它将花费$ bytes和$ rate(每GB)并返回$ total

时间:2010-04-08 17:52:16

标签: php math function

我希望有人可以帮助一个给出两个参数的函数:

@param $ bytes:消耗的数据的总字节数 @param $ rate:每GB的费率,例如.22(22美分)

@returns欠款总额

当然回到最接近的分数。提前感谢您的帮助。

4 个答案:

答案 0 :(得分:4)

function blah($bytes, $rate) {
    return number_format($bytes / 1000000000 * $rate, 2);
}

(或者,您可能希望使用1073741824作为除数。)

答案 1 :(得分:1)

这样的事情:

function calc_price($bytes, $rate) {
    return ($bytes / (1024*1024*1024)) * $rate;
}

基本上:

  • 取字节数
  • 将其转换为千兆字节
  • 乘以每千兆字节的价格

你可以预先进行乘法,在你的代码中使用1073741824 - 会更快一些;但我猜想会让代码更难理解。


例如,以下代码部分:

var_dump(calc_price(2*1024*1024*1024, 0.22));

会给你:

float 0.44


注意:这不是四舍五入的:它是一个表示问题,应该在表示层面完成,而不是在计算函数中完成。

请参阅round和/或number_format函数。

例如,以下代码部分:

$price = calc_price(2.56*1024*1024*1024, 0.22);
echo number_format($price, 2, '.', ',');

会给你:

0.56

答案 2 :(得分:1)

function cost($bytes, $rate, $precision = 2) {
    return number_format(($bytes / 1073741824) * $rate, $precision);
}

答案 3 :(得分:1)

这完全取决于您的公司/流程如何定义GB。

我会这样做,可能是

define( 'GIGABYTE', pow( 10, 9 ) );
// or
//define( 'GIGABYTE', pow( 1024, 3 ) );

function calcTotal( $bytes, $rate )
{
    return ( $bytes / GIGABYTE ) * $rate;
}