Java ParseLong NumberFormat异常错误
为什么会出现Java ParseLong NumberFormat异常错误,java,algorithm,Java,Algorithm,为什么会出现数字格式异常?您的字符串太长;-) 检查Long.MAX_VALUELong维度为64位,因此最大二进制字符串长度不能超过64位(您有100个)。您可以将数据拆分为几个64位部分,并收集Long值列表 也可以使用BigInteger: import java.util.*; public class HelloWorld { public static void main(String[] args) { String s = "110101001011101
数字格式异常?您的字符串太长;-)
检查Long.MAX_VALUELong维度为64位,因此最大二进制字符串长度不能超过64位(您有100个)。您可以将数据拆分为几个64位部分,并收集Long
值列表
也可以使用BigInteger:
import java.util.*;
public class HelloWorld {
public static void main(String[] args) {
String s = "110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011";
long sum = Long.parseLong(s, 2);
System.out.println(sum);
}
}
只需查看附件页面,了解特定类型的最大值和最小值是多少。按照某人的建议尝试使用BigInteger
您将获得一个NumberFormatException
,因为在Java中,1101010010111011110001111100010101000010110101101101101101110111110000001111101101101101101101101101101111
中的数字太大,无法存储在长的中
作为参考,Java中long
的最大值为9223372036854775807(十进制)。在二进制中,这是1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,小于:
1101 0100 1011 1011 1000 1111 1001 1000 1010 1000 0110 1011 1010 1000 0011 0110 1100 0000 1101 1110 011。因为它是looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogy您的字符串s
很容易超出长数据类型所能容纳的范围!长
为64位。您正在指定99位99>64
。有人给出了BigInteger
作为答案,但由于某种原因它被删除了。它起作用了。
BigInteger val = new BigInteger("110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011", 2);
System.out.println(val.toString()); // prints '526700554598729746900966573811'