zoukankan      html  css  js  c++  java
  • 做乘法运算的时候需要考虑越界问题

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

  • 相关阅读:
    EM
    te2
    te
    XLnet
    GPT
    40.Properties
    38.特殊操作流
    37.I/O流
    35.File
    day68日考
  • 原文地址:https://www.cnblogs.com/liwp_Stephen/p/3520297.html
Copyright © 2011-2022 走看看