而不是“8.75”返回。
哪种方法?感谢。
答案 0 :(得分:12)
如果我没有完全错误,35/4
总是评估为8.即使在
double result = 35 / 4;
你会得到这个结果(加倍,即8.0
)。这是因为35
和4
都是整数,因此应用了整数除法。表达式首先被计算为整数,只有结果被转换为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)
施放到int
(int)
示例:
答案 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将删除小数。