Php 警告:除以零-计算百分比

Php 警告:除以零-计算百分比,php,Php,好的,在我开始之前,我想指出,我知道除以零是不好的。我想知道的是,避免这种情况的最好方法是什么 在我的CMS中,我试图显示最近注册的注册用户数量。我展示的第一个统计数据是“今天的注册用户”,显示这个值是比昨天的值高还是低,并显示为正/负百分比 阅读这里的其他问题,人们建议如果其中一个值等于0,就完全避免计算,但是如果昨天有0个注册用户,今天有20个,那么我需要显示一个明确的增加-我不能什么都不显示 我已创建此查询: SELECT COUNT(CASE WHEN DATEDIFF(HOUR, CU

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

在我的CMS中,我试图显示最近注册的注册用户数量。我展示的第一个统计数据是“今天的注册用户”,显示这个值是比昨天的值高还是低,并显示为正/负百分比

阅读这里的其他问题,人们建议如果其中一个值等于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
简单地说:

echo diff_percent($row['1to2days'], $row['1day']);
我可以很容易地使用SQL将零转换为null,或者如果检测到零,我可以停止函数中的计算,但是正如我前面提到的,如果昨天有0个用户,今天有20个,我必须证明在过去24小时内用户数量有了相当大的增长。最好的办法是什么?如果
todays\u users>yesterdays\u users
但是
yesterdays\u users==0
我是否只显示“100%”?我的数学很差,我很困惑-请帮忙。

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

  • 不要被零除

在进行计算之前添加额外的检查,如果遇到零,则处理该问题。i、 e.显示不同的消息,而不是百分比。

为什么不尝试使用中点方法()查找所有情况下的百分比,或者仅当初始值为0时?基本上,不是将变化除以初始值(如正常百分比),而是将变化除以初始值和最终值的平均值


如果使用中点法,如果两个值都为零(假设我们不处理负数),则只能得到一个除以零的错误,可以将其视为特例,只显示0%,因为没有变化。

从数学上讲,不可能给出一个百分比。您可以将其指定为100%的增长作为特例,或0%,或假装它曾经是1,或任何您喜欢的值,但这将是完全任意的。即
如果分母==0,则打印“0%”
echo diff_percent($row['1to2days'], $row['1day']);