Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# - Fatal编程技术网

C# 试图将两个数字除,结果总是被零除

C# 试图将两个数字除,结果总是被零除,c#,C#,好的,这是我的问题,我有以下代码: decRatio = _intNumofRooms /intTotal; if (decRatio > 1/6) { MessageBox.Show("There can't be more than six people in the same room!", "Trump's Hotel", MessageBoxButtons.OK, MessageBoxIcon.Information); txtNumOfChildren.Focu

好的,这是我的问题,我有以下代码:

decRatio = _intNumofRooms /intTotal;
if (decRatio > 1/6) {
    MessageBox.Show("There can't be more than six people in the same room!", "Trump's Hotel", MessageBoxButtons.OK, MessageBoxIcon.Information);
    txtNumOfChildren.Focus();
    return false;
}
return true;

我有一家酒店,每个房间只能容纳6名成年人。成年人是总数,现在我试着将房间的数量除以我必须得到一个比率的成年人的数量,然后如果这个比率大于1/6,我试着显示一个消息框,要求他们输入一个数量,其中一个房间内最多只能有六个人,但继续得到dividebyzeroexception错误。有这样的比率的另一种方法,或者我如何解决这个问题

整数除法在C中生成一个整数。1/6是两个整数的除法,因此它生成零。如果您想生成分数,则以双倍进行计算:

double ratio = (double)numberOfRooms / (double)total;
if (ratio > 1.0 / 6.0) ...
我不知道这是否会导致你的除法为零的错误,但是你发布的代码显然是错误的,所以从修复它开始吧

另外,不要根据事物的类型在C中命名它们。这不是很多房间。有好几个房间。这不是intTotal,而是totalNumberOfGuests

而且,你的数学完全错了。假设有六个人和六个房间。这是一个6/6的比率,大于1/6,所以这是违反政策?这完全是颠倒过来的

你最好完全避免比率。您可以使用如下整数进行工作:

if (totalNumberOfGuests > 6 * totalNumberOfRooms) ...
如果你能做乘法,就不要做除法

下一步:您已经将用户界面与业务策略代码混为一谈。假设您决定将限制从6更改为5;代码中有多少地方需要更改?您不仅要更改数学,还要更改错误字符串。将此逻辑封装到一个函数中,该函数确定是否违反了策略,如果违反,则确定消息应该是什么。使业务策略代码远离用户界面代码。您能看到如何重新组织代码以更好地分离您的关注点吗

最后,在您再次在此发布之前,您应该阅读以下内容:


当您有关于代码的特定问题时,请回来。我编写了一个无法修复的错误程序。这不是一个问题。

您确定inTotal不是零吗?请将代码放在问题本身中,而不是作为图片的外部链接。将代码复制粘贴为文本。不要使用图像。显示intTotal的来源您在哪里定义intTotal?inTotal是如何定义的?很高兴不要截图代码,用代码格式发布到这里。@itsme86但这不能除以零。我还建议在该操作中使用total之前也检查total是否为零,如果为零,则将比率设置为零。谢谢,教授想要这样的名称,我个人也不喜欢这样。。。