检查分母

时间:2012-04-01 10:08:32

标签: c# .net

让我们说我想计算百分比并做:

double n = ...;
double total = ...;
double percents = (total == 0) ? 0 : (n/ total) * 100;

R#警告我“修复浮动数字比较”。以及使用EPSILON的提示。我清楚地理解为什么这个警告一般都会显示出来。但在这种情况下,我唯一想要的是避免抛出异常。所以我在固定的0上“陈述”。

这是正确的假设还是存在一些隐藏的缺陷,我还是应该使用一些epsilon?

2 个答案:

答案 0 :(得分:2)

浮点除以0.0没有错。

您只能获得DivideByZeroExceptions进行整数除法。

你遇到的问题是1.0 / 0.0导致无穷大。

如果要显示,只需使用string.Format

答案 1 :(得分:1)

这里不需要使用Epsilon。您检查总计等于0仅用于防止DivideByZeroExceptions。当然还有四舍五入的问题,但那些与警告无关,只适用于n / total表达式