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