1

我想将 long(TB 中的巨大文件大小)除以某个数字(巨大的 int)并安全地得到一个 int。但是使用类型转换属性,int 变得很长,结果也很长。我确定我的商将是一个 int,铸造正常,或者请指导我找到更好的解决方案。

4

2 回答 2

7

好吧,如果铸造没问题,那就铸造吧!

long size = ...;
int divisor = ...;
int result = (int) (size / divisor);

当然,只有当您确定结果确实在 an 范围内时,您应该这样做int——您当然可以随时检查:

long size = ...;
int divisor = ...;
long fullResult = size / divisor;
if (fullResult < Integer.MIN_VALUE || fullResult > Integer.MAX_VALUE) {
    // Whatever, e.g. throw an exception
}
int result = (int) fullResult;
于 2013-08-22T06:59:25.403 回答
0

使用明确的向下转型:

long l_quot=l_size/(long)i_divisor;
int i_qout=(int)l_quot;
于 2013-08-22T06:59:22.533 回答