2

我正在尝试做一个非常基本的操作,如下所示:

double a=21/5;
System.out.println(a);

但是,每次我得到4.0作为输出而不是4.2. 我是第一次遇到这种情况。我已经使用 Java 多年,但从未遇到过这种晦涩难懂的问题。

4

5 回答 5

8

您正在使用整数除法,其结果将始终为整数您应该使用这样的东西。

double a=(double)21/5;
于 2013-03-01T16:24:11.630 回答
3

你正在做整数除法......

尝试:

double a = 21.0/5;
于 2013-03-01T16:25:03.157 回答
0

强制除法或将参数之一指定为小数以强制返回为双精度:

double a = (double)21/5;

-或者-

double a = 21.0/5;
于 2013-03-01T16:24:34.690 回答
0

只需将其中一个数字加倍:

double a = 21/5.0;
于 2013-03-01T16:24:48.340 回答
0

强制演员加倍。 double a = 21.0/5

这称为算术提升。这意味着方程中的所有项都等于精度最高的变量类型。在这种情况下双倍。

于 2013-03-01T16:25:30.253 回答