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

为什么不用加强制转换符 , 得出来的不是小数么 怎么自动变4了

(m*8/(n+2)) = 4.4444444444   这你们都算的出来 但我直接写 int  x = 4.4%5 ; 怎么又是错的 要加上个强制转换

正在回答

2 回答

你这不是一个问题!!!

咱们一个一个说,你直接写 int  x = 4.4%5:肯定是错的,因为int x=@%@:

@必须是整数 。只要你有double类型的一定错。

你观察一下本题中int  x = ( m * 8 / ( n + 2 ) ) % m ;

                            int x = ( 5 * 8 / ( 7 + 2 ) ) % 5 ; 没有一个double型变量及数字。

 别急,先明白下一个问题在解释4.4问题。

下一个问题:大范围到小范围的强制转换(显示转换)。

                     double a = 5.5 ;

                     int b = ( int ) a ;

输出一下       System.out.println ( b ) ;    结果是 5 !  四舍五入了! 

两者的不同在于,参与运算的数值均为int型,得到的结果一样要求是int型,会自动舍弃小数部分。

而强制转换,是参与运算的数值为double型时,如果你需要给一个int型变量赋值,或运算后赋值都要把等号两边变成同一种类型,本题中如m为double型。你要做的是先把m强制转换再继续。

 

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

x是整型的

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

举报

0/150
提交
取消

为什么不用加强制转换符 , 得出来的不是小数么 怎么自动变4了

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号