【问题标题】:Whats difference between this two: BigInteger.valueOf(10000) and BigInteger.valueOf(0010000)?这两者有什么区别:BigInteger.valueOf(10000) 和 BigInteger.valueOf(0010000)?
【发布时间】:2016-10-24 06:47:12
【问题描述】:

我正在处理一个问题并遇到了这个问题。发生了什么:

当我们使用这个时: BigInteger.valueOf(10000) 它给出了10000 的值

但是

当我们使用这个BigInteger.valueOf(0010000) 时,它会给出4096 的值

这两者有什么区别?

【问题讨论】:

标签: java numeric biginteger


【解决方案1】:

0010000 是八进制文字。这与BigInteger 无关——它只是Java 整数文字(JLS 3.10.1):

System.out.println(10000);   // 10000
System.out.println(0010000); // 4096

来自 JLS:

十进制数字可以是单个 ASCII 数字 0,表示整数零,或者由 1 到 9 的 ASCII 数字组成,可选地后跟一个或多个 0 到 9 的 ASCII 数字,中间夹有下划线,表示正整数。

...

八进制数字由一个 ASCII 数字 0 后跟一个或多个 ASCII 数字 0 到 7 和下划线组成,可以表示正整数、零整数或负整数。

【讨论】:

    【解决方案2】:

    第二个是八进制整数,第一个是十进制,这就是差异的原因

    【讨论】:

      【解决方案3】:

      这是以十进制文字作为参数

      BigInteger.valueOf(10000) 
      

      这是一个八进制文字作为参数

      BigInteger.valueOf(0010000)because begins with 0

      所以你在技术上传递了 2 个不同的数字

      1. 10000

      1. 4096

      【讨论】:

        猜你喜欢
        • 2011-04-06
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多