Java 双重操作输出错误

Java 双重操作输出错误,java,double,arithmetic-expressions,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

我是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作为控制台的输出。我犯了什么错误

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

试试这个

double o = (double)(( ballsPlayed / 6 )  + ((double) ( ballsPlayed % 6) / 10 ));
这里您将得到16+0.4=16.4

的输出
((ballsPlayed%6)/10))
是0而不是0.4,因为这里的所有值都是
int
。对于
/
操作,需要一个双精度值才能获得
双精度输出。要获得所需的输出,请更改如下

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


只需将
ballsPlayed
变量从
int
更改为

double ballsPlayed = 100;
这样就不需要进行多次强制转换。((ballsPlayed%6)/10))的输出将是0而不是0.4,因为编译器正在处理一个int值。

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

一个整数除以一个整数得到一个整数-将其转换为double太晚了,如果第一个整数除法的结果被截断,您将得到一个
double
表示

double o = (( ballsPlayed / 6 )  + ( (double)( ballsPlayed % 6) / 10 ));
如果希望从中获得分数结果,则需要将计算中涉及的一个数字强制转换(或声明)为浮点数据类型


这几乎是每个人都说过的

ballsPlayed
是int,因此默认情况下
ballsPlayed/6
只会给您int,因此是16。与之类似的是
ballsPlayed%6
的情况,它将得到int,再除以10将得到int,结果是0

这里您希望第一个除法为int,第二个除法为double。因此,只需将第二个操作的类型设置为

double o = (( ballsPlayed / 6 )  + ( ( (double)ballsPlayed % 6) / 10 ));
在这里,ballsPlayed%6将是4,(double)ballsPlayed%6)将是4.0,一个double。您也可以在除法后进行铸造

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

你所说的“它给出了一个不需要的输出”是什么意思?是否存在错误,答案是否与您预期的不同?在实例化double时不需要小数点:)您可以声明
double ballsPlayed=100