3

我有以下用于计算百分比减少或增加的 PHP:

function CalculatePercentageIncrease( $nLastMonthPeriod, $nCurrentPeriod ) {
    if ( !is_numeric( $nLastMonthPeriod ) || !is_numeric( $nCurrentPeriod ) )
        return 0;

    if ( $nLastMonthPeriod == 0 )
        return 0;

    $nLastMonthPeriod = intval( $nLastMonthPeriod );
    $nCurrentPeriod = intval( $nCurrentPeriod );

    $nDifference = ( ( ( $nCurrentPeriod - $nLastMonthPeriod ) / $nLastMonthPeriod ) * 100 );

    return round( $nDifference );
}

我想知道的问题是如果$nLastMonthPeriod是 0 并且$nCurrentPeriod是 10 那么它应该返回 100 而不是 0 吗?

4

5 回答 5

8

从 0 到 10 的增加不能用百分比增加来描述。您需要单独处理这种情况。

答案不是 0 % 或 100 %。

任何一个

  1. 告诉函数的用户它仅在旧值为 != 0 时才有效

  2. 使用例外

  3. 返回 NULL(由 Jack Maney 建议)

于 2012-01-22T08:50:16.133 回答
2

如果 $nLastMonthPeriod 是 0并且 $nCurrentPeriod 是 10 那么它应该 返回100 而不是0吗?

那是你编码的...

  if ( $nLastMonthPeriod == 0 )
        return 0;

你的意思是?

  if ( $nLastMonthPeriod == 0 )
       if ($nCurrentPeriod>0)
          return 100; //whatever you want
       else
          return 0;
于 2012-01-22T08:48:08.517 回答
2

由于您不能除以零(出于许多技术原因和世俗原因),因此最好返回NULLwhen $nLastMonthPeriod==0

于 2012-01-22T08:48:40.920 回答
0

您可以简单地进行检查:

$nDifference = $nLastMonthPeriod == 0 ? 100 : ( ( ( $nCurrentPeriod - $nLastMonthPeriod ) / $nLastMonthPeriod ) * 100 );
于 2012-01-22T08:48:27.833 回答
0
function percent($small, $large){
    if($large !=0){
    $percentCalc = ((100*$small)/$large);
    $percent = number_format($percentCalc, 1);
        return $percent;
    } else {
    return '0';
}
}
于 2013-01-30T04:29:28.777 回答