做乘法运算的时候需要考虑越界问题
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
在程序中用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
相关文章推荐
- 在制定多项目管理计划的时候,需要考虑的3个问题?
- 在制定多项目管理计划的时候,需要考虑的3个问题?
- mysql 转orecle 需要考虑的问题
- 表设计的时候要考虑的几个问题
- 虚幻4UI和游戏Game切换的时候,鼠标的隐藏和显示需要多点一下问题的解决方法
- 用开源代码构建机器人需要考虑的问题
- Asp.net 2.0的异常处理需要考虑的问题
- 关于注册和登录需要考虑的问题
- SqlServer中使用Select语句给变量赋值的时候需要注意的一个问题
- 灰度发布需要考虑的问题
- 头文件声明类的时候的一些需要注意的问题
- 设计一款DLL壳需要考虑的问题
- 浮点数/float/double 是否需要考虑网络字节序的问题
- 机器视觉系统需要考虑的十个问题
- 32位程序移植到64位需要考虑的问题
- 5-2 一元多项式的乘法与加法运算*(格式问题)
- Asp.net 2.0的异常处理需要考虑的问题
- 重构模式(三)---- 应用 Refactoring 需要考虑的问题
- 做SEO三问为什么用需要考虑的问题
- USRP N210在OAI平台上应用需要考虑的问题