Java 双重操作输出错误
我是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
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代码>