做乘法运算的时候需要考虑越界问题
昨天改一个问题是在界面上有时候显示数字是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
posted on 2014-01-15 10:31 liwp_Stephen 阅读(392) 评论(0) 编辑 收藏 举报