双精度值返回0

问题描述:

下面是一个例子:双精度值返回0

Double d = (1/3); 
System.out.println(d); 

这将返回0,而不是0.33333 ...因为它应该。

有谁知道吗?

+0

[Java中的Division总是导致零(0)?]的可能重复(http://stackoverflow.com/questions/10455677/division-in-java-always-results-in-零-0) – 2017-01-21 17:14:36

+0

@ΦXocę웃Пepeúpaツ它不是重复的。这个问题是这个问题的重复。查看日期之前的日期 – Zoe 2017-07-16 09:23:57

这是因为13作为integers处理时不另行指定,所以1/3计算结果为integer0,然后投给double0。要修复它,请尝试(1.0/3)1D/3以明确说明您正在处理双精度值。

如果您有想要使用浮点除法来划分int S,你必须投的intdouble

double d = (double)intValue1/(double)intValue2 

(事实上,只有铸造intValue2应该足够有在intValue1被自动强制转换为double,我相信。)

使用,而不是,除非你需要使用这些VALU es在对象意义上。请注意0​​的概念