我想将长(TBs中的巨大文件大小)除以某个数字(巨大的int)并安全地得到一个int。但是对于类型转换属性,int变长并且结果很长。我确定我的商数将是一个int,正在投入,或者请指导我找到更好的解决方案。
答案 0 :(得分:7)
如果施放是好的,那么只是施放!
long size = ...;
int divisor = ...;
int result = (int) (size / divisor);
当然,如果您确定结果真的在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;
答案 1 :(得分:0)
使用明确的向下转发:
long l_quot=l_size/(long)i_divisor;
int i_qout=(int)l_quot;