Java小点:int与long,整数乘法难以察觉的小错误

版权所有,转载注明。

long maxfilesize = 1024 * 1024 * 1024 *2;
//maxfilesize = ? , -2147483647. Why?

开发时,设置最大文件尺寸为2GB,
方法签名:

void setFileSizeMax(long fileSizeMax)

给参数时如下写法:

setFileSizeMax(1024 * 1024 * 1024 *2);

结果一直不对,明明是2GB的量,为啥一直报超出尺寸。
仔细思考了下,1024 * 1024 * 1024 *2运算时:
1024是int类型
1024 * 1024 还是int
1024 * 1024 *1024 还是int
int范围是-2147483648 ~ 2147483647
所以,1024 * 1024 * 1024 * 2 = 2147483648,超出int最大值,结果呢,变成了最小值-2147483648
正确的写法:

setFileSizeMax(((long)1024) * 1024 * 1024 *2);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容