丿善良的贼丶
2016-03-22 22:05
int m = 5;
int n = 7;
double x = (m*8/(n+2))%m;
为什么运行结果不是:4.44444 而是:4.0???
4.444是(m*8/(n+2))这个式子算出来的,%是指求余的算术运算符,而4.444%m也就是说4.444除以5后所取的余数,余数只有整数,同时你前面是用了double类型,所以显示是4.0。
我的问题就错着呢,刚发现错误,算错了
前面的乱来。。。取余可以取浮点型,还有整除是什么鬼。。。
m,n都是int,返回int类型,结果相当于舍掉小数点后面是4,4赋值给double类型的x,自动转换成4.0。。
(byte char short)这三个运算返回int型, int<long< float<double 这几个运算结果是往后看。。。
因为类型不同,int类型相加,默认结果的类型也是int。所以从int转换成double就会出现这样的结果。
%是整除
double 类型的是浮点型的,但是取余取得的是整数类型。
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题