以下是代码:
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
?
答案 0 :(得分:8)
它在第一个示例中进行整数除法,因为这是数字文字的默认类型。尝试将其更改为-1.0/9
(或1d/9d
- d后缀表示double
),您应该得到相同的答案。
答案 1 :(得分:2)
1和9都是整数。尝试
1.0/9
这就是fraction/9
适用的原因,因为fraction
是双倍的。
答案 2 :(得分:1)
当你做-1/9时,它表示“-1,那是一个整数.9,这是一个整数除法的整个分区的-1 / 9。哦,现在我需要强制加倍。”
将其更改为-1.0 / 9可以解决问题。
答案 3 :(得分:0)
尝试用括号括起“-1/9”。
答案 4 :(得分:0)
第一个是0,因为它正在进行整数除法。 -1和9以及整数,当除以0时。然后将结果转换为double,以便将其存储在fraction
中。最简单的解决方案是:
fraction = -1.0/9;
答案 5 :(得分:0)
由于-1
和9
是整数,因此-1/9
是整数除法(结果为0
,当转换为double时为0.0
)
要进行浮点除法,您应将其中一个数字转换为加倍,(double) 9
,9d
或简称为9.0
。
在后一种情况下,fraction
已经加倍(-1.0
),因此fraction/9
是浮点除法。