【问题标题】:Is scientific notation interpreted as int or float?科学记数法被解释为 int 还是 float?
【发布时间】:2013-03-09 18:18:38
【问题描述】:

如果我使用科学记数法(例如1e9)在我的代码中硬编码一个数字,那么该数字的类型是什么(int、long、float、double..)?

当有效数或指数是浮点数时,它显然不能是整数,但是在上面的情况下呢?

【问题讨论】:

    标签: java int scientific-notation


    【解决方案1】:

    这些通常是 double 类型。 如果你在它后面加上一个fF),它就是一个浮点数。

    double d = 1e9; 
    float f = 1e9f;
    

    【讨论】:

      【解决方案2】:

      它将被视为floating point literal,如果没有尾随fF,它将是double

      Integer literals 不能使用科学计数法。

      【讨论】:

        【解决方案3】:

        e 使其成为浮点文字。来自 JLS (§3.10.2. Floating-Point Literals):

        如果浮点文字以 ASCII 字母 Ff 为后缀,则其类型为 float;否则,它的类型是 double,并且可以选择以 ASCII 字母 Dd 为后缀(第 4.2.3 节)。

        因此,1e9 的类型为 double1e9d 也是如此。另一方面,1e9f 的类型为 float

        【讨论】:

          【解决方案4】:

          除非你使用 'f' 或 'F' 否则它将是 'double' 然后它将是浮点字面量。

          【讨论】:

            【解决方案5】:

            最好使用双精度。因为它具有十进制浮点数,是一种与科学计数法密切相关的计算机算术系统。 例如: 0.000 000 007 51 在科学计数法中,它是 7.51×10-9。 当你将它用作 int 时,7.51 将是 7,而当你使用 int 时它将是 7.51。

            【讨论】:

              猜你喜欢
              • 2011-02-02
              • 1970-01-01
              • 1970-01-01
              • 2020-10-28
              • 1970-01-01
              • 2017-10-16
              • 2010-10-12
              相关资源
              最近更新 更多