开发者

Help with PHP function that will take $bytes and $rate (per GB) and return $total

开发者 https://www.devze.com 2022-12-26 18:21 出处:网络
I was hoping someone might help with a function that given two parameters: @param $bytes : total amount in bytes of data consumed

I was hoping someone might help with a function that given two parameters:

@param $bytes : total amount in bytes of data consumed @param $rate : rate per GB, example .22 (for 22 cents)

@returns Total amount owed

Rounded to nearest cent of course. Thanks in a开发者_运维百科dvance for any help.


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

(Alternatively, you might want to use 1073741824 as the divisor.)


What about something like this :

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

Basically :

  • take the number of bytes
  • convert it to gigabytes
  • multiply by the price per gigabyte

You could do the multiplication beforehand, to use 1073741824 in your code -- would be a bit faster ; but would make the code harder to understand, I suppose.


For example, the following portion of code :

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

Will give you :

float 0.44


Note : this doesn't round to anything : it's a matter of presentation, and should be done at the presentation level, not in the function that does the calculation.

See the round and/or number_format functions, for that.

For example, the following portion of code :

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

will give you :

0.56


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


This is going to entirely depend on how your company/process defines what a GB is.

I'd do it like this, probably

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

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

精彩评论

暂无评论...
验证码 换一张
取 消