问答详情
源自:3-8 Java中运算符的优先级

小白跪求解释

最后那个40/9%5不是应该等于40/9吗,而且这还有小数,不是和前面的int向矛盾了吗

提问者:weixin_慕勒6034554 2020-02-18 15:18

个回答

  • weixin_慕姐0147855
    2020-11-26 09:06:31

    int m = 5;

    int n = 7;

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

    因为之前规定的m和n是int,所以(m*8/(n+2))的结果也是int也就是4,

    假如是这么写double x=(m*8/(n+2)),结果就是4.0,

    假如是这么写double x=((double)m*8/(n+2)),结果就是4.444444444444445


  • 氵萧君
    2020-03-23 17:12:03

    40/9=4.44444444,这个结果在对5取余,得到的还是4.44444,但因为x是整型(int),所以不保留小数,也就是4。

  • Mr沐阳
    2020-03-05 21:57:01

    1、Java中 数值运算时 /  你可以理解为 取商;

    2、无论 a/b 结果时 4.4....... or  4.9.......  都只取整数部分,不会按四舍五入 运算结果为int型,并非浮点型,别把        主观思维加进来;

    3、强中转换 一般只有在 赋值 运算时 用,赋值运算符 =  前后数据类型不一样时才用,否则编译报错,

        代码中 int x = (m*8/(n+2)%m);  x 的数据类型为int型,(m*8/9%m) 按优先级应从左往右计算,每一步运算结果和最终结果都是 int型,和变量 x类型一样,故不需要强制转换。 

  • WE_Xing
    2020-02-24 19:55:16

    java 和 C 一样  用 / 这个符号就不是我们通常的除法,用这个 / 只能得到整数部分,和int定义没关系;

    如果你用float定义,那结果就是4.00也不会是4.444444

  • qq_慕盖茨9497363
    2020-02-22 11:01:45

    int 取整 后面小数都去掉的,没矛盾

  • weixin_慕勒6034554
    2020-02-18 19:35:51

    记错了,是4.44444444

  • weixin_慕勒6034554
    2020-02-18 19:34:52

    这个取整就是对的,4.75,但是前面是int啊,int后面没有强制赋值的话,不是应该是有语病的吗

  • weixin_慕勒6034554
    2020-02-18 19:32:18

    老哥,我也是新手,昨晚才开始学的那种新,有兴趣加个好友,一起讨论学习啊

  • ava乐在征途
    2020-02-18 17:56:06

    刚刚我再算了下,是40/9,我怀疑是它题目错了,我也是新手,刚学,互相讨论哦

  • ava乐在征途
    2020-02-18 17:42:18

    你应该是算错了吧,int  x = ( m * 8 / ( n + 2 ) ) % m ;m=5;n=7;

    这样算下来,前面是35,不是40,前面的数算错了,后面就会出错的哦;原题算下来的话,就是一个int类型的了,你再试试看哦