我真的很抱歉问这么简单的问题,但我真的不知道是什么问题。我想将任何标记转换为 12 年级量表。我正在尝试如下:
double coef=(4/20)*12;
int mark=(int)coef;
但是当我通过调试器执行这段代码时,我看到它coef
等于零。为什么这是双变量?
我真的很抱歉问这么简单的问题,但我真的不知道是什么问题。我想将任何标记转换为 12 年级量表。我正在尝试如下:
double coef=(4/20)*12;
int mark=(int)coef;
但是当我通过调试器执行这段代码时,我看到它coef
等于零。为什么这是双变量?
因为即使您将结果分配给一个double
值,计算也是使用整数执行的。而4 / 20
在 C# 的整数算术中是0
. 所以你需要类似的东西
double coef = 4.0 / 20 * 12;
4.0
确保其余计算使用s double
。但通常将所有数字明确化实际上是一个好习惯,这样读者就不必了解类型转换规则:
double coef = 4.0 / 20.0 * 12.0;
在需要转换之前,它是整数除法......
4/20 = 0
0 * 12 = 0
另一种选择是:
4 * 12 / 20;
但是请注意,结果将被截断为 2(因为这仍然是整数除法),这没关系,因为这就是你的演员int
无论如何都会做的。
另外,请注意,转换为int
将截断,而不是四舍五入。Math.Round
如果您想实际舍入结果,请使用。这与您提供的数字没有区别,但我认为您实际上不会只使用这些常量!
您首先进行整数除法,然后乘以 12。
当你这样做时:
(4/20)
计算结果为 0,因为它们都是整数。
通过以下方式将其修改为明确声明双打:
double coef = (4.0 / 20.0) * 12;
尝试
double coef = (4.0/20.0)*12;
然后
int mark = (int)coef;
代码中所有的常量都是整数,4/20的结果,作为整数,是0。
您需要将其重写为:
(4.0/20.0)*12.0;