Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 十进制值检查是否为零_C#_Math_Puzzle - Fatal编程技术网

C# 十进制值检查是否为零

C# 十进制值检查是否为零,c#,math,puzzle,C#,Math,Puzzle,我正在尝试编写一个除法方法,它接受两个参数 public static decimal Divide(decimal divisor, decimal dividend) { return dividend / divisor; } 现在,如果除数是0,我们得到不能被零除的误差,这是可以的 我想做的是检查除数是否为0,如果是,则将其转换为1。在我的方法中没有很多if语句,有没有办法做到这一点?我认为很多if()会造成混乱。我知道数学上不应该这样做,但我有其他的功能 例如: if(div

我正在尝试编写一个除法方法,它接受两个参数

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()语句,它可以完成吗?

这与if语句几乎相同,但更简洁

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

您可以这样做一个条件if语句。这与VB.net中的IIF相同

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

确保用()包装下半部分,否则将出现除法错误。

使用
?:
运算符

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

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


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

你可以将它与
decimal.Zero
进行比较,比如
somDecimalVar==decimal.Zero

+1来指出除以1是不必要的,只返回divident。这也很好,但为了进一步扩展,我喜欢另一个。我给你+1的帮助。你不需要两组括号,是吗?回报股息/(除数==0?1:除数);如果要做这个诀窍,我还有一个附加集,你也可以这样做:返回红利/(除数==0?1:除数);但是您确实需要()包装结果的值,否则您仍然会得到除以零的结果error@Brian-不,你不需要这两套,你是对的。另一方面,我有时发现杰森的方法更可读。如果有疑问,添加括号。我猜这是你的问题域,但是考虑到如果除数使得从0.000001到0.0i的代码比条件if语句变小,你的代码将返回一个非常不同的结果。更容易阅读!!这就是我想要的这比一个If语句更简洁