代码之家  ›  专栏  ›  技术社区  ›  GuruKulki

如何在没有尾数/指数格式的情况下打印浮点值?

  •  5
  • GuruKulki  · 技术社区  · 14 年前

    我想打印一个双倍值。它是打印在马蒂萨和指数格式,这不是我想要的。例如,我的程序打印 1.234567E6 值1243567。我怎样才能打印出来 1234657

    4 回复  |  直到 14 年前
        1
  •  3
  •   VeeArr    14 年前
        2
  •  4
  •   barwnikk    11 年前
    BigDecimal.valueOf(double).toPlainString();
    
        4
  •  1
  •   AgilePro    11 年前

    有两种选择。这些在文档中被描述为“d”表示十进制整数,“f”表示十进制数。我实际上需要的是“定点”格式,文档中没有明确描述,但是如果参数设置正确,f将提供定点。如果您将小数点设置为零,它还将显示一个整数。

    对于双精度值12345678,格式化将提供以下结果:

    Double d = Double.parseDouble("12345678");
    String r1 = String.format("%f",d);        // 12345678.000000
    String r2 = String.format("%10f",d);      // 12345678.000000
    String r3 = String.format("%5.2f",d);     // 12345678.00
    String r4 = String.format("%5.0f",d);     // 12345678
    String r5 = String.format("%,f",d);       // 12,345,678.000000
    String r6 = String.format("%,5.0f",d);    // 12,345,678
    String r7 = String.format("%d",d);        // throws an exception!
    

    在最后一个选项中,即使您希望数字显示为整数,也不能将“d”选项与Double一起使用。