双重操作的输出错误

时间:2015-05-01 14:05:18

标签: java double arithmetic-expressions

我是Java编程的初学者。当我编写一个简单的控制台应用程序时,它给出的输出不是我想要的。我的代码是:

class myClass{
    public static void main(String[] args) {
        int ballsPlayed = 100;

        double o = (double)(( ballsPlayed / 6 )  + ( ( ballsPlayed % 6) / 10 ));
        System.out.println(o);
    }
}

( ( ballsPlayed % 6) / 10)应为0.4,因为100/6的剩余部分为4,而4/10必须为0.4。那么变量' o'必须给出16.4(16 + 0.4)。但我从控制台输出16.0作为输出。我犯了什么错误?

5 个答案:

答案 0 :(得分:1)

您必须将ballsPlayeddouble进行类型转换,因为ballsPlayed是一个整数。它返回(ballsPlayed % 6) / 10的整数部分。因此除了0.4之外你得到0。

试试这个,

double o = (double)(( ballsPlayed / 6 )  + ((double) ( ballsPlayed % 6) / 10 ));

这里你将获得16 + 0.4 = 16.4

答案 1 :(得分:1)

只需将ballsPlayed变量从int更改为

即可
double ballsPlayed = 100;

这将消除多个演员阵容的需要。 ((ballsPlayed%6)/ 10))的输出将为0而不是0.4,因为编译器正在处理int值。

答案 2 :(得分:0)

(( ballsPlayed % 6) / 10 ))的输出为0而不是0.4,因为此处的所有值均为int/操作需要一个double值才能获得double输出。获得所需的输出更改,如

 ( (double)( ballsPlayed % 6) / 10 ))

(( ballsPlayed % 6) / 10.0 )) // Make 10 as double

答案 3 :(得分:0)

你的问题从这里开始 ballsPlayed / 6

整数除以整数给出一个整数 - 将它转换为加倍为时已晚,如果第一个整数除法的截断结果

,你只会获得double表示

如果要从中获得小数结果,则需要将计算中涉及的数字之一(或声明)转换为浮点数据类型。

这几乎是其他人所说的......

答案 4 :(得分:0)

@CucumberOptions(features="target/") public class CucumberRunner() { @BeforeClass public void getFeatures() { //get the files from server //save them to /target/, mark them as temporary } } 是int,所以默认情况下ballsPlayed只会给你int,这样就是16.类似的情况是ballsPlayed/6会给出int并且再次除以10会给出int这将导致0。

在这里你希望第一个分区是int,第二个分区被视为double .. 所以只需将第二个分区的转换为

ballsPlayed % 6

这里的ballPlayed%6将是4而(double)ballsPlayed%6)将是4.0,一个双倍。你也可以在分裂后进行施法

double o = (( ballsPlayed / 6 )  + ( ( (double)ballsPlayed % 6) / 10 ));