@Test
public void testOnDivInt() {
int a = 49999911, b = 100000000;
System.out.println( "49999911/100000000=" + 100*a/b + "%" );
int c = 499999, d = 1000000;
System.out.println( "499999/1000000=" + 100*c/d + "%" );
}
执行结果:
49999911/100000000=7%
499999/1000000=49%
------------------------------------------------------------------------------
加分析:
/**
* 输出:49999911/100000000=7%
* 分析:java整数位4字节,共32位,最高位为符号位,所以最大值为2^31-1=2,147,483,647
* 当 49,999,911*100 = 4,999,991,100,大于2^32,已经溢出。溢出后得到的数字为:705,023,804=(4,999,991,100 - 2^32),
* 因此结果为 705,023,804/100,000,000 = 7
*/
--
修改:chzhang7901 FROM 223.104.41.*
FROM 223.104.41.*