【问题标题】:What are those numbers and what is their type? [duplicate]这些数字是什么,它们的类型是什么? [复制]
【发布时间】:2016-10-22 11:50:57
【问题描述】:

好的,我这里有几个值:

'F', 0xf, 070, 70L, 77e-1f, 7.7f, 7.77e1, 77.7

我知道'F'char,而70L 的类型为long。另外,我知道0xf 是十六进制(对吗?)而070 是八进制。但其他数字是什么?为什么是77.7 double 而不是float

【问题讨论】:

标签: java double literals primitive-types


【解决方案1】:

你要找的是this

  • 关于77.7

如果浮点字面量以字母 F 结尾,则它的类型为 float 或 f;否则它的类型是 double 并且可以选择以 字母 D 或 d。

  • 0xf 不是hex 类型。没有类型hex。它只是一个用十六进制写的int。就像070 是一个用八进制写的int

  • 文字 77e-1f 显然是一个浮点数,因为它以 f 结尾。

  • eexponent77e-1f 实际上是 77 * 10^(-1)7.7。文字 7.77e1 是双精度数,原因与 77.7 是双精度数相同,只是 7.77e1 等于 7.77 * 10 ^ 1 = 77.7

【讨论】:

    【解决方案2】:

    在 Java 中,包含点的数字文字默认为 double 类型。如果你想要一个浮点数,你需要附加f

    包含e的数字是指数或科学记数法,但我不打算在这里解释,因为它与编程无关。

    【讨论】:

      【解决方案3】:

      只有两个你自己没有解释:

      7.7f
      

      那个 f 的意思是 float - 它表示这不应该是一个 double 字面量,而是一个浮点数!您会看到,默认情况下,任何“浮点”字面量都自动属于 double 类型,您需要“f”来强制执行“较小”的浮点类型。

      还有

      77e-1f 
      

      正在使用科学记数法,请参阅here 以获取更多解释。

      【讨论】:

        【解决方案4】:

        77e-1 表示:77 是数字乘数,e(或E)表示base 10-1 表示指数。

        所以结果是77 by (10 powered by -1),或77 by .1,即。 e. 7.7

        这种符号的名称是scientificlogarithmic,适用于非常大或非常小的数字,例如。 G。 1 million = 1.000.000可以表示为1e6

        【讨论】:

          【解决方案5】:

          为什么是 77.7 double 而不是 float?

          浮点数数字必须以f结尾,但double数字不需要d结尾。

          77e-1f 是一个 float7710^-1 的幂,所以它等于 7.7

          7.77e1 相同 == 77.7

          【讨论】:

          • 但是我们在谈论java。在 Java 中,文字 070 是八进制的。总是。
          • 谢谢,我删除了那部分。
          • 7.77e1 = 7 x 10 幂 1 = 77.7,而不是 0.777
          • 您将其更改为 7.77 仍然错误... 7.77e1 = 77.7。
          • 搞错了,再次感谢。
          猜你喜欢
          • 1970-01-01
          • 2012-03-15
          • 2014-08-10
          • 2020-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-20
          • 2012-03-23
          相关资源
          最近更新 更多