这个部门出了什么问题?
这是代码:
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;
因为-1
和9
是整数,所以-1
/ 9
是整数除法(结果为0
,当转换为double时为0.0
)。
要进行浮点除法,您应该将其中一个数字转换为double, (double) 9
9d
或只是9.0
。
在后一种情况下, fraction
已经是双( -1.0
),因此fraction/9
是浮点除法。