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

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

转载于:https://www.cnblogs.com/liwp_Stephen/p/3520297.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值