我想将一个long值转换为一个int值,并且如果long值太大而无法放入int中,它应该只是最大的int值。我的解决方案看起来像这样:将long转换为int来切断溢出
long longVar = ...;
int intVar = (int) Math.min(longVar, Integer.MAX_VALUE)
在更普遍的方式(包括最大负),这将是:
long longVar = ...;
int intVar = (int) (longVar < 0 ? Math.max(longVar, Integer.MIN_VALUE) : Math.min(longVar, Integer.MAX_VALUE));
是否有更简单的方式来做到这一点,像一个方法JRE还是什么?
'intVar =(int)Math.min(Math.max(longVar,Integer.MIN_VALUE),Integer.MAX_VALUE));'?不需要'<0'检查。你也可以把它变成一个实用的方法。 – Fildor
哦,你是对的。谢谢 – David