c#double - 为什么答案总是0?

时间:2014-06-13 10:34:01

标签: c# double

我有一个双倍,当分配时总是回到0.0,但不应该发生。

我的代码是

double test = (27096140 / 27216140);

答案应为0.9955 ......

我没有正确使用双原语类型?

干杯

修改

当然,我使用的是int而没有浮点数。 知道这将是一个常识问题。

4 个答案:

答案 0 :(得分:3)

您正在使用整数除法,您应该使用浮点除法:

double test = (27096140.0 / 27216140);

答案 1 :(得分:2)

因为你使用的是整数而不是双精度数。使用:

double test = (27096140.0d / 27216140.0d);

答案 2 :(得分:2)

你实际上是在这里执行整数除法,因为2个数字是完整的。这会强制计算结果为int,从而截断精度,最终得到0

你需要告诉编译器你实际上使用的是浮点数而不是int,只需在其中一个数字上加一个浮点就可以解决这个问题。

double test = (27096140.0 / 27216140);

或者,您实际上可以将数字声明为双精度数

double a = 27096140;
double b = 27216140;
double test = (a / b);

甚至在计算中输出数字

double test = ((double)27096140 / 27216140)

答案 3 :(得分:1)

数字27096140和27216140是整数,因此除法的结果也是int:0。 然后将其转换为双倍:0.0