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

来源:3-8 Java中运算符的优先级

丿善良的贼丶

2016-03-22 22:05

int m = 5;

int n = 7;

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

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

写回答 关注

6回答

  • 940522
    2016-05-11 23:29:09

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

  • 丿善良的贼丶
    2016-03-23 09:03:12

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

  • 充电_
    2016-03-23 00:00:04
    • 前面的乱来。。。取余可以取浮点型,还有整除是什么鬼。。。

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

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

    充电_ 回复谁抢了我的好...

    40/9先运算得4, 40/(9+0.0)就是4.444....

    2017-11-19 13:27:18

    共 2 条回复 >

  • 不学完PHP我是狗
    2016-03-22 22:11:06

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

  • mengxly
    2016-03-22 22:10:23

    %是整除

  • 慕哥4561046
    2016-03-22 22:09:55

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

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165554 学习 · 17587 问题

查看课程

相似问题