十进制值检查是否为零

时间:2009-05-27 14:55:51

标签: c# math puzzle

我正在尝试编写一个分区方法,它接受2个参数。

public static decimal Divide(decimal divisor, decimal dividend)
{
    return dividend / divisor;
}

现在,如果除数为0,我们得到的不能除以零错误,这是可以的。

我想要做的是检查除数是否为0,如果是,将其转换为1.有没有办法在我的方法中有很多if语句?我认为很多if()都会变得混乱。我在数学上知道不应该这样做,但我还有其他功能。

例如:

if(divisor == 0)
{
    divisor = 1;
}
return dividend / divisor;

可以在没有if()声明的情况下完成吗?

5 个答案:

答案 0 :(得分:15)

您可以像这样执行条件if语句。这与VB.net中的IIF相同

return dividend / ((divisor == 0) ? 1 : divisor);

确保用()包裹你的下半部分,否则你会得到一个除法错误。

答案 1 :(得分:12)

使用?:运算符

return (divisor == 0) ? dividend : dividend / divisor 

答案 2 :(得分:2)

这与if语句几乎相同,但它更清晰。

return dividend / divisor == 0 ? 1 : divisor;

答案 3 :(得分:0)

如果你真的想要,你可以创建自己的类型并重载/运算符以获得所需的行为。实现隐式转换运算符以避免转换或类型转换。

但是,我认为这不是一个好主意,因为它会增加一些运行时开销;唯一的好处是你得到了一些代码(可以说)看起来更清洁。

答案 4 :(得分:0)

您可以像decimal.Zero那样与somDecimalVar == decimal.Zero进行比较