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

小白跪求解释

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

正在回答

10 回答

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


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

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

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

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类型一样,故不需要强制转换。 

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

慕少1317773

就算是取整数4,那4%5 出来是多少呢
2020-03-24 回复 有任何疑惑可以回复我~
#2

Mr沐阳 回复 慕少1317773

%是取余,4除以5,商0 余4,所以结果是4,这还用专门解释吗,你实在不确定自己敲一下不就知道了,不动手只YY,那你编程水平很难进步
2020-04-09 回复 有任何疑惑可以回复我~

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

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

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

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

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

记错了,是4.44444444

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

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

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

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

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

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

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

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

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

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

WE_Xing

没错,就是40 (40 / 9) % 5
2020-02-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165151    人
  • 解答问题       17581    个

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

进入课程

小白跪求解释

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