为什么我的 DecimalFormat 不适用于 Java 中的 2 位小数?

why does my DecimalFormat not work for 2 decimal places in Java?

我在 java 中有一个 DecimalFormat,当我使用它时,它没有按预期工作。 在我得到 150000 的输入中,我希望得到 15.00 作为结果。 代码如下所示:

import java.text.DecimalFormat;

public class MyClass {
    public static void main(String args[]) {
      long x=150000;
      DecimalFormat df = new DecimalFormat("#.##");
      System.out.println("x " + x/10000);
      long y = x/10000;
      
      System.out.println(df.format(y));
    }
}

而且,控制台仍然显示 15 而不是 15.00。我在这里错过了什么? 顺便说一句,有没有更好的方法来制作这样的格式化程序(同时尝试将 15000 转换为 15.00)?或者在这种情况下将它除以 10000 是最好的选择吗?感谢您的任何反馈!

您的模式应该是:

DecimalFormat df = new DecimalFormat("#.00");

因为 DecimalFormat 的 javadoc 说:

Symbol Location Localized? Meaning
0 Number Yes Digit
# Number Yes Digit, zero shows as absent

Btw, is there any better way to make such formatter (while trying to convert 15000 to 15.00)? Or is the best option to just divide it by 10000 in that case?

格式化只是以某种文本形式表示一个值。这不是关于改变一个值,15000 和 15 是不同的值。所以这样划分是获得不同值的正确方法。