我想附加这些长变量,所以我先把它们变成了字符串。当我将它们返回到long时会抛出NumberFormatException。
disable-output-escaping="yes"
答案 0 :(得分:3)
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
的范围。