我有以下用于计算百分比减少或增加的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吗?
答案 0 :(得分:8)
从0增加到10不能说是百分比增加。你需要单独处理这个案子。
答案不是0%或100%。
无论
告诉用户该功能仅在旧值为时才有效!= 0
使用例外
返回NULL(Jack Maney建议)
答案 1 :(得分: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;
答案 2 :(得分:2)
由于您不能除以零(出于多种原因,无论是技术还是世俗),最好在NULL
时返回$nLastMonthPeriod==0
。
答案 3 :(得分:0)
你可以简单地检查一下:
$nDifference = $nLastMonthPeriod == 0 ? 100 : ( ( ( $nCurrentPeriod - $nLastMonthPeriod ) / $nLastMonthPeriod ) * 100 );
答案 4 :(得分:0)
function percent($small, $large){
if($large !=0){
$percentCalc = ((100*$small)/$large);
$percent = number_format($percentCalc, 1);
return $percent;
} else {
return '0';
}
}