这个部门出了什么问题?

这是代码:

class testsum { public static void main(String arg[]) { double sum=0; double fraction; fraction=-1/9; System.out.println("fraction: "+fraction); fraction=-1; fraction=fraction/9; System.out.println("fraction: "+fraction); } } 

输出为0 ,然后为-0.11111111

为什么第一个输出0而不是-0.11111111111

它在第一个示例中进行整数除法,因为这是数字文字的默认类型。 尝试将其更改为-1.0/9 (或1d/9d – d后缀表示double ),您应该得到相同的答案。

1和9都是整数。 尝试

 1.0/9 

这就是为什么它适用于fraction/9 ,因为fraction是双倍的。

当你执行-1/9时,它会显示“-1,这是一个整数.9,这是一个整数除法的整数分数为-1./9。哦,现在我需要强制加倍。”

将其更改为-1.0 / 9应该可以解决问题。

尝试用括号括起“-1/9”。

第一个是0,因为它正在进行整数除法。 -1和9以及整数,当除以0时。然后将结果转换为double,以便将其存储在fraction 。 最简单的解决方案是:

 fraction = -1.0/9; 

因为-19是整数,所以-1 / 9是整数除法(结果为0 ,当转换为double时为0.0 )。

要进行浮点除法,您应该将其中一个数字转换为double, (double) 9 9d或只是9.0

在后一种情况下, fraction已经是双( -1.0 ),因此fraction/9是浮点除法。