Помощь с функцией PHP, которая будет принимать $ байтов и $ rate (за ГБ) и возвращать $ total - PullRequest
0 голосов
/ 08 апреля 2010

Я надеялся, что кто-то может помочь с функцией, которая задает два параметра:

@ param $ bytes: общее количество в байтах использованных данных. @param $ rate: ставка за ГБ, пример .22 (для 22 центов)

@ возвращает Общая сумма задолженности

Округлено до ближайшего цента, конечно. Заранее спасибо за любую помощь.

Ответы [ 4 ]

4 голосов
/ 08 апреля 2010
function blah($bytes, $rate) {
    return number_format($bytes / 1000000000 * $rate, 2);
}

(В качестве альтернативы вы можете использовать 1073741824 в качестве делителя.)

1 голос
/ 08 апреля 2010

Это будет полностью зависеть от того, как ваша компания / процесс определяет, что такое ГБ.

Я бы так сделал, наверное

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

function calcTotal( $bytes, $rate )
{
    return ( $bytes / GIGABYTE ) * $rate;
}
1 голос
/ 08 апреля 2010
function cost($bytes, $rate, $precision = 2) {
    return number_format(($bytes / 1073741824) * $rate, $precision);
}
1 голос
/ 08 апреля 2010

Что-то вроде этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...