【问题标题】:Converting from Integer, to BigInteger从整数转换为 BigInteger
【发布时间】:2010-10-07 02:02:51
【问题描述】:

我想知道是否有任何方法可以将 Integer 类型的变量转换为 BigInteger。我尝试对 Integer 变量进行类型转换,但我收到一个错误,指出类型不可转换。

【问题讨论】:

  • 您提出了一些关于 BigInteger 的问题,通过阅读 Javadocs 可以很容易地解决这些问题。按照我的答案中的链接,查看 BigInteger 拥有的所有方法和构造函数。

标签: java biginteger


【解决方案1】:

你要的方法是BigInteger#valueOf(long val)

例如,

BigInteger bi = BigInteger.valueOf(myInteger.intValue());

首先创建一个字符串是不必要且不受欢迎的。

【讨论】:

  • @Mich,没有。如果是整数,Java 会自动为你展开。 (OP 说他有一个整数)
  • 这样也行。在 Integer 上,intValue() 不会溢出,因此对 valueOf 的调用只会将 int 扩大到 long。在这个例子中使用 longValue() 和 intValue() 没有明显的区别,但是如果他从 Long 开始,他会想使用 longValue()。
  • Amar,这将类似于其他基于字符串的方法。这里要避免的关键是任何字符串的生成或解析。
  • 并不是说使用字符串会给你错误的答案,而是对计算机来说是额外的工作。例如,您可以步行到隔壁的房子,或者您可以向相反的方向走,几乎可以绕地球一圈。你仍然可以到达那里,如果你有一架快速的火箭飞机,你可能不会注意到它所花费的时间,但这很浪费,而且确实需要更长的时间。
  • 当 myInteger 为 null 时,它会是 NPE。
【解决方案2】:

将整数转换为大整数

        BigInteger big_integer = BigInteger.valueOf(1234);

将 BigInteger 转换回 Integer

int integer_value = big_integer.intValue();

将 BigInteger 转换回 long

long long_value = big_integer.longValue();

将字符串转换为 BigInteger

        BigInteger bigInteger = new BigInteger("1234");

将 BigInteger 转换回字符串

        String string_expression = bigInteger.toString();

【讨论】:

    【解决方案3】:

    你可以这样做:

        Integer i = 1;
        new BigInteger("" + i);
    

    【讨论】:

    • 你可以,但你为什么要这样做?在已经接受的答案中提出了一个更好的解决方案。
    • 创建字符串来执行整数运算所浪费的 CPU 周期比您想计算的要多。
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多