双值返回0

ole*_*etk 9 java division

这是一个例子:

Double d = (1/3);
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

这将返回0,而不是0.33333 ......应该如此.

有人知道吗?

Fir*_*aad 38

那是因为1并且当你没有另外指定时3被视为integers,所以1/3评估integer 0然后将其转换为double 0.要修复它,请尝试(1.0/3)或者1D/3明确说明您正在处理双值.


coo*_*ird 12

如果你int想使用浮点除法进行划分,你必须将其int转换为double:

double d = (double)intValue1 / (double)intValue2
Run Code Online (Sandbox Code Playgroud)

(实际上,我认为只有铸造intValue2应该足以自动intValue1铸造double.)