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

昨天改一个问题是在界面上有时候显示数字是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编辑  收藏  举报

导航