给定35/4,我想要一个"8"返回

use*_*626 -2 java

而不是"8.75"返回.

哪种方法?谢谢.

Mar*_*ner 12

如果我没有完全错误,35/4总是评估为8.即使在

double result = 35 / 4;
Run Code Online (Sandbox Code Playgroud)

你会得到这个结果(双,即8.0).这是因为35并且4都是整数,因此应用整数除法.表达式首先计算为整数,只将结果转换为double值.

另一方面,如果你想要正确的结果,8.75你将不得不写

 double result = 35. / 4;
Run Code Online (Sandbox Code Playgroud)

为了强制应用浮点除法.顺便说一句,这是一个常见的陷阱.

当然,如果你有双重值,比如

double a = 35;
double b = 4;
Run Code Online (Sandbox Code Playgroud)

您需要明确地转换为int或使用Math.floor()之前帖子中的建议.


Boz*_*zho 10

使用

Math.floor(..)
Run Code Online (Sandbox Code Playgroud)

返回小于或等于参数且等于数学整数的最大(最接近正无穷大)double值.

或者,如果你需要操纵整数而不是双精度,那么只需分配给int:

int a = 35 / 4;
Run Code Online (Sandbox Code Playgroud)

实际上,如果您直接使用数字或使用int变量,您将int自动获得结果.