为了账号安全,请及时绑定邮箱和手机立即绑定

int换成double结果为什么不是4.4444而是4.0???

int m = 5;

int n = 7;

double x = (m*8/(n+2))%m;

为什么运行结果不是:4.44444   而是:4.0???

正在回答

6 回答

4.444是(m*8/(n+2))这个式子算出来的,%是指求余的算术运算符,而4.444%m也就是说4.444除以5后所取的余数,余数只有整数,同时你前面是用了double类型,所以显示是4.0。

0 回复 有任何疑惑可以回复我~

我的问题就错着呢,刚发现错误,算错了

0 回复 有任何疑惑可以回复我~
  • 前面的乱来。。。取余可以取浮点型,还有整除是什么鬼。。。

  • m,n都是int,返回int类型,结果相当于舍掉小数点后面是4,4赋值给double类型的x,自动转换成4.0。。

  • (byte char short)这三个运算返回int型, int<long< float<double 这几个运算结果是往后看。。。

0 回复 有任何疑惑可以回复我~
#1

谁抢了我的好奇宝宝

package com.imooc; public class HelloWorld { public static void main(String[] args) { double x=40/9+0.0; System.out.println(x); } } 就这样也是4.0 还是不明白诶
2017-10-30 回复 有任何疑惑可以回复我~
#2

充电_ 回复 谁抢了我的好奇宝宝

40/9先运算得4, 40/(9+0.0)就是4.444....
2017-11-19 回复 有任何疑惑可以回复我~

因为类型不同,int类型相加,默认结果的类型也是int。所以从int转换成double就会出现这样的结果。

0 回复 有任何疑惑可以回复我~

%是整除

0 回复 有任何疑惑可以回复我~

double 类型的是浮点型的,但是取余取得的是整数类型。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

int换成double结果为什么不是4.4444而是4.0???

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信