有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中解析处理对int来说太大的数字

所以我试图解析一个字符串,该字符串包含一个对于Int存储来说太大的数字。但是我需要字符串的值,因为我要除以它。我可以将字符串解析为长字符串吗

n = Long.parseLong(string);

像那样?或者有没有一种方法可以将字符串除以一个数字,而无需将字符串转换为数字?我使用的代码如下所示:

private static String getFinished(String x, int y){
    int word = Integer.parseInt(x);
    word = word/y;

我使用的号码是:1980715126555015951540148577071512651650 但我可能会使用数字更长的时间


共 (3) 个答案

  1. # 1 楼答案

    您正在查找的类是BigInteger。或BigDecimal用于浮点数

  2. # 2 楼答案

    Can I parse the string into a Long?

    对。只要这个数字不太大。长/长的范围为-9223372036854775808到+9223372036854775807

    另一种选择是使用BigIntegerjavadoc)。它可以应付更大的数字。(BigInteger的上限很可能由可用内存量决定。)

    The number I am using is: 1980715126555015951540148577071512651650

    这需要一个大整数。例如:

    BigInteger small = new BigInteger("1980715126555015951540148577071512651650");
    BigInteger notQuiteSoSmall = small.add(BigInteger.ONE);
    

    注:

    1. BigInteger没有运算符重载。必须使用显式方法调用
    2. BigInteger对象类似于String对象;i、 它们是不变的。算术方法生成一个新的BigInteger对象
  3. # 3 楼答案

    不,如果不将字符串解析为数字,则不能将其拆分

    并且long num = Long.parseLong(str);是100%合法的,前提是您使用try/catch块包装它,或者从方法引发异常

    编辑: 根据您添加的示例字符串,long可能不再对您有帮助。检查BigInteger