【问题标题】:Decimal and special formatting in Java [duplicate]Java中的十进制和特殊格式[重复]
【发布时间】:2014-01-19 10:08:22
【问题描述】:

我想转换我的最终双精度值 即(1.0) 像 1.00 美元一样打印出来。这在 Java 中怎么可能?

我导入了 java.lang.* DecimalFormat 格式化程序 = new DecimalFormat("#.00");

不确定如何在其中输入美元符号。我不知道除了 "$" + .....

之外是否还有其他方法可以做到这一点

【问题讨论】:

  • 你能展示你的代码吗(你试过什么)?

标签: java formatting numbers format decimal


【解决方案1】:

使用DecimalFormat

    double value = 1.0;
    DecimalFormat dformat = new DecimalFormat("#.00");
    String modifiedVal = dformat.format(value);
    System.out.println("$"+modifiedVal);

【讨论】:

  • 老实说,printf 或 NumberFormat 是一个更直接的解决方案,忽略这个问题是一个 dup。
  • @BrianRoach :谢谢,知道了一个新事物.. :)
【解决方案2】:

NumberFormat 类有一个用于货币格式化的预定义实例。

double value = 1.0;
NumberFormat nf = NumberFormat.getCurrencyInstance();
System.out.println(nf.format(value));

【讨论】:

    【解决方案3】:

    您可以在 Java 中使用 LocaleNumberFormat 类。

    NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en","US"));
    System.out.println(formatter.format(1.0));
    

    【讨论】:

      【解决方案4】:

      使用String.format:

      // Format double with 2 decimal places and add a dollar sign
      String price = "$" + String.format("%.2f", myDouble);
      

      要直接打印,请使用PrintWriter.printf,例如在System.out:

      System.out.printf("$%.2f", myDouble);
      

      【讨论】:

      • 老实说,printf 或 NumberFormat 是一个更直接的解决方案,忽略这个问题是一个 dup。
      • @BrianRoach 是的,首先考虑使用printf,但将其更改为String.format,因为它允许使用该值而不仅仅是打印它。而且,你可以使用NumberFormat,但我个人更喜欢简单。感谢您的反馈:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多