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

时间:2010-07-08 07:06:08

标签: java

而不是“8.75”返回。

哪种方法?感谢。

6 个答案:

答案 0 :(得分:12)

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

double result = 35 / 4;

你会得到这个结果(加倍,即8.0)。这是因为354都是整数,因此应用了整数除法。表达式首先被计算为整数,只有结果被转换为double值。

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

 double result = 35. / 4;

以强制应用浮点除法。顺便说一下,这是一个常见的陷阱。

当然,如果您有双重值,例如

double a = 35;
double b = 4;

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

答案 1 :(得分:10)

使用

Math.floor(..)
  

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

或者,如果你需要操纵int而不是double,那么只需分配给int:

int a = 35 / 4;

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

答案 2 :(得分:4)

答案 3 :(得分:2)

显式地将表达式转换为int

答案 4 :(得分:1)

int x = 35/4

整数除法导致返回8而不是8.75

答案 5 :(得分:0)

使用

int myInt = (int) Math.floor(value);

8.75将四舍五入为8.如果值为double,则转换为int将删除小数。