我正在从csv文件中读取大量记录。 列中的一个是金额,它有2个小数位。 所以我想将它解析为整数形式,但是如下所示它遇到错误:
int trxnAmt = Integer.parseInt("002428859600");
假设它是2428859600对吗?
但它会引发我的错误> java.lang.NumberFormatException:对于输入字符串:“002428859600”
我试图使用:
long a = Long.parseLong("002428859600");
它对我来说很好。
我仍然无法知道发生了什么。这个数字太大了吗?
答案 0 :(得分:4)
是2428859600
是一个很长的数字。尝试为它分配一个int,你会得到一个编译器错误:
int i = 2428859600; // error as 2428859600 is clearly outta int range(2,147,483,647)
long l = 2428859600L; //no error
答案 1 :(得分:2)
是的,您正在超出范围整数值到parseInt
方法。
int数据类型是32位带符号的二进制补码整数。它有 最小值-2,147,483,648,最大值 2,147,483,647 (包括的)。
尝试长期或其他合适的选择 这可能会对您有所帮助:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 2 :(得分:1)
答案 3 :(得分:-1)
您应确保输入确实是整数(即“16”),或者如果它超出整数范围,则使用Double.parseDouble()
或Long.parseLong()
答案 4 :(得分:-1)
您收到java.lang.NumberFormatException: For input string: "002428859600"
因为,数字002428859600
无法表示为32位整数(类型int
)。它可以表示为64位整数(类型long
)。 Java中的长文字以“L”结尾:002428859600L