您的位置:首页 > 其它

做乘法运算的时候需要考虑越界问题

2014-01-15 10:31 399 查看
昨天改一个问题是在界面上有时候显示数字是0,其实不是0,经过调查是在程序里把MB转换成Byte的时候出现了越界问题。

在程序中用int来保存MB的值,在转换成Byte的时候,使用如下算法

long sizeInByte = sizeInMB*1024*1024

在测试的时候发现sizeInMB=4096的时候,结果竟然是0

解决办法:

int byteInMB = 4096;
long byteInByte = byteInMB * 1024 * 1024;
System.out.println(byteInByte);

byteInByte = byteInMB * 1024 * 1024L;
System.out.println(byteInByte);

byteInByte = ((long) byteInMB) * 1024 * 1024;
System.out.println(byteInByte);

执行结果如下:

0
4294967296
4294967296
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: