我希望有人可以帮助一个给出两个参数的函数:
@param $ bytes:消耗的数据的总字节数 @param $ rate:每GB的费率,例如.22(22美分)
@returns欠款总额
当然回到最接近的分数。提前感谢您的帮助。
答案 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;
}