php - 警告 : Division By Zero - Calculating percentages

标签 php

好吧,在开始之前,我想指出,我知道除以零是不好的。我想知道的是,避免这种情况的最佳方法是什么。

在我的 CMS 中,我尝试显示最近注册的注册用户数量。我显示的第一个统计数据是“今日注册用户”,显示该值相对于昨天的值是上升还是下降,并将其显示为正/负百分比。

阅读关于 SO 的其他问题,人们建议如果其中一个值等于 0,则完全避免计算,但如果昨天有 0 个注册用户,今天有 20 个注册用户,那么我需要显示一个明确的增加 - 我不能只显示任何内容。

我创建了这个查询:

SELECT
COUNT(CASE WHEN DATEDIFF(HOUR, CURDATE(), created) <= 24 THEN user_id
ELSE NULL END) AS 1day,
COUNT(CASE WHEN DATEDIFF(HOUR, CURDATE(), created) >= 25 AND DATEDIFF(HOUR, CURDATE(), created) <= 48 THEN user_id
ELSE NULL END) AS 1to2days,
... other cases ...
FROM users

这个函数:

function diff_percent($a, $b) {
    $c = ($a > $b) ? ($a-$b)/$a*-100 : ($b-$a)/$b*100; 
    return $c;
}

只需通过以下方式调用它:

echo diff_percent($row['1to2days'], $row['1day']);

我可以很容易地使用 SQL 将零转换为 null,或者如果检测到零,我可以停止函数中的计算,但正如我上面提到的,如果昨天有 0 个用户,今天有 20 个用户,我必须显示过去24小时内用户数量大幅增加。解决这个问题的最佳方法是什么?如果 todays_users > Tuesdays_usersyesterdays_users == 0 我是否只显示“增长 100%”?我的数学很差,我很困惑 - 请帮助。

最佳答案

“好吧,在开始之前,我想指出,我知道除以零不好。我想知道的是,避免这种情况的最佳方法是什么。”

  • 不要除以零!

在进行计算之前添加额外的检查,如果遇到零则进行适当的处​​理。即显示不同的消息而不是百分比。

关于php - 警告 : Division By Zero - Calculating percentages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684069/

相关文章:

php - 推进模式反向错误 : could not find driver

javascript - 使用正则表达式验证 img url

php - 错误 : Unknown column 'Array' in 'field list'

php - 暂停使用 javascript 提交表单

php - 是否可以获取YouTube视频的所有评论?

php - 如何获取数据库中的数据并在View中显示具体数据(Codeigniter)

php - 防止 PHP 在 POST 之前运行

PHP 用其他数组中的值替换数组索引键

php - 将日期转换为可用格式以插入 MySQL

php - 对象接收和返回值吗?