我有一个双倍,当分配时总是回到0.0,但不应该发生。
我的代码是
double test = (27096140 / 27216140);
答案应为0.9955 ......
我没有正确使用双原语类型?
干杯
修改
当然,我使用的是int而没有浮点数。 知道这将是一个常识问题。
答案 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