-3

可能重复:
为什么两个整数相除在 Java 中返回 0.0?

我有一些非常令人困惑的问题..我想计算一些东西,经过一些调试,我看到 java 计算这个算术:2 / 4 = 0.0但它应该是 0.5

2 & 4 存储在整数变量中,结果存储在双精度类型中。

我是否清楚地错过了什么?

4

3 回答 3

7

这是因为整数除法(整数除法向 0 舍入)。将操作数之一转换为双精度类型。

例子:

double temp = (double)2/4

会给你正确的结果。

于 2012-12-03T15:18:39.173 回答
4

采用

myDouble = (double) integerWhoseValueIs2 / integerWhoseValueIs4

将它存储在 double 中的事实并没有改变两个整数相除得到整数的事实。当你储存它时,为时已晚。

来自Java 语言规范

整数除法向 0 舍入。也就是说,在二进制数值提升(第 5.6.2 节)之后为整数的操作数 n 和 d 产生的商是一个整数值 q,其幅值尽可能大,同时满足 |d · q|。≤ |n|。

于 2012-12-03T15:18:34.073 回答
0

如果你不写强制转换double,结果总是一个int

double a = (double) 2/4;

于 2012-12-03T15:20:04.413 回答