我使用以下代码将String转换为int:
int foo = Integer.parseInt("1234");
如何确保int值不会溢出或下溢?
答案 0 :(得分:6)
As the documentation says,如果输入字符串不包含可解析的整数,则会抛出NumberFormatException
。这包括整数输入但超出int
范围的输入。
条款"下溢"和"溢出"不是你在这里寻找的术语:它们指的是你在有效范围内有几个整数(比如20亿)的情况,你将它们加在一起(或执行一些算术运算,达到类似的效果)并获得有效范围之外的整数。这通常会导致像因为Two's Complement等而包含在底片中的问题。另一方面,你的问题只是一个简单的字符串编码整数,位于有效范围之外。
答案 1 :(得分:1)
您可以随时查看:
long pre_foo = Long.parseLong("1234");
if (pre_foo < Integer.MIN_VALUE || pre_foo > Integer.MAX_VALUE){
//Handle this situation, maybe keep it a long,
//or use modula to fit it in an integer format
}
else {
int foo = (int) pre_foo;
}