代码之家  ›  专栏  ›  技术社区  ›  Roshana Pitigala Laxmansinghsodhanohdiyala

为什么+e取消而-e不取消?

  •  4
  • Roshana Pitigala Laxmansinghsodhanohdiyala  · 技术社区  · 6 年前
    System.out.println(2e+5);
    

    上面一行的输出是,

    200000.0
    

    在底线以下,

    System.out.println(2e-5);
    

    输出是,

    2.0e-5
    

    为什么 2e-5 没有解决 -10^5 给出输出,

    0.00002
    
    2 回复  |  直到 6 年前
        1
  •  8
  •   JB Nizet    6 年前

    因为这就是双节课的设计师 chose to implement it 以下内容:

    […]

    • 如果m大于或等于10 -3个 但不到10 ,则它被表示为m的整数部分,以不带前导零的十进制形式,后跟“.”('\u002E'),后跟一个或多个表示m的小数部分的十进制数字。
    • 如果m小于10 -3个 大于或等于10 7个 ,然后用所谓的“计算机科学记数法”来表示

    当然,他们本可以做出另一个选择,但事实就是如此。

    如文档所述,如果需要特定的格式,请使用 NumberFormat 格式化你的双人间。

        2
  •  0
  •   HariUserX    6 年前

    正如@niset已经指出的,当将double转换为string时,如果位数很大,则输出将使用科学符号。这不仅仅是小数。

    考虑:

    double d = 1500000000;
    System.out.println(String.valueOf(d));
    

    这将打印 1.5E9

    如果要以可读格式进行转换,请使用 String.format

    System.out.println(String.format ("%.0f", d));
    

    将打印 1500000000