为什么不用加强制转换符 , 得出来的不是小数么 怎么自动变4了
(m*8/(n+2)) = 4.4444444444 这你们都算的出来 但我直接写 int x = 4.4%5 ; 怎么又是错的 要加上个强制转换
2016-09-19
你这不是一个问题!!!
咱们一个一个说,你直接写 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强制转换再继续。
举报