美文网首页Java知识
Java小点:int与long,整数乘法难以察觉的小错误

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

作者: heguorui | 来源:发表于2016-05-22 20:27 被阅读1289次

    版权所有,转载注明。

    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);
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/iqtarttx.html