1

我真的很抱歉问这么简单的问题,但我真的不知道是什么问题。我想将任何标记转换为 12 年级量表。我正在尝试如下:

double coef=(4/20)*12;
int mark=(int)coef;

但是当我通过调试器执行这段代码时,我看到它coef等于零。为什么这是双变量?

4

6 回答 6

12

因为即使您结果分配给一个double值,计算也是使用整数执行的。而4 / 20在 C# 的整数算术中是0. 所以你需要类似的东西

double coef = 4.0 / 20 * 12;

4.0确保其余计算使用s double。但通常将所有数字明确化实际上是一个好习惯,这样读者就不必了解类型转换规则:

double coef = 4.0 / 20.0 * 12.0;
于 2012-11-19T19:31:35.863 回答
2

在需要转换之前,它是整数除法......

4/20 = 0
0 * 12 = 0
于 2012-11-19T19:31:27.313 回答
2

另一种选择是:

4 * 12 / 20;

但是请注意,结果将被截断为 2(因为这仍然是整数除法),这没关系,因为这就是你的演员int无论如何都会做的。

另外,请注意,转换为int将截断,而不是四舍五入。Math.Round如果您想实际舍入结果,请使用。这与您提供的数字没有区别,但我认为您实际上不会只使用这些常量!

于 2012-11-19T19:35:52.207 回答
1

您首先进行整数除法,然后乘以 12。

当你这样做时:

(4/20)

计算结果为 0,因为它们都是整数。

通过以下方式将其修改为明确声明双打:

double coef = (4.0 / 20.0) * 12;
于 2012-11-19T19:31:30.360 回答
1

尝试

double coef = (4.0/20.0)*12;

然后

int mark = (int)coef;
于 2012-11-19T19:32:04.580 回答
1

代码中所有的常量都是整数,4/20的结果,作为整数,是0。

您需要将其重写为:

(4.0/20.0)*12.0;
于 2012-11-19T19:32:06.350 回答