如何在没有 NumberFormatException 的情况下将 String 转换为 long?

How to convert String to long without NumberFormatException?

我想附加这些长变量,所以我先把它们变成了字符串。当我 return 他们回到 long 时它会抛出 NumberFormatException。

public long BLZ = 12345678l;
public long KNr = 1234567890l;
public String landCode = "1314";
long fedor = Long.parseLong(String.valueOf(BLZ) + String.valueOf(KNr) + 
landCode + "00"); 
long BLZ = 12345678l;
long KNr = 1234567890l;
String landCode = "1314";
System.out.println(Long.MAX_VALUE);
System.out.println(String.valueOf(BLZ) + String.valueOf(KNr) + landCode + "00"); 

导致输出

9223372036854775807

123456781234567890131400

您尝试解析的数字大于 long 可以处理的数量。

编辑:您询问了如何解决您的问题。在你的问题的评论中有一个理论,你想计算一个 IBAN 的校验和。您可以使用 java.math.BigInteger:

System.out.println(Long.MAX_VALUE);
long BLZ = 12345678l;
long KNr = 1234567890l;
String landCode = "1314";
String val = String.valueOf(BLZ) + String.valueOf(KNr) + landCode + "00";
System.out.println(val); 
System.out.println(BigInteger.valueOf(98).subtract(new BigInteger(val).mod(BigInteger.valueOf(97))));

这将导致以下输出:

9223372036854775807

123456781234567890131400

87

或者你可以检查 IBAN Documentation(它是德语,但我想这对你来说应该不是问题 ;-) 在第 4 章中有一个计算校验和的方法的描述,如果你'重新限制(像这里)。您仍然需要 longs 才能实现它,因为 9 位数字可以超出 int.

的范围