这个部门出了什么问题?

时间:2011-04-04 20:01:01

标签: java floating-point

以下是代码:

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

6 个答案:

答案 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)

由于-19是整数,因此-1/9是整数除法(结果为0,当转换为double时为0.0

要进行浮点除法,您应将其中一个数字转换为加倍,(double) 99d或简称为9.0

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

相关问题