在 Java class DecimalFormat 中,小数点左侧的主题标签有什么作用?

In the Java class DecimalFormat, what do the hashtags at the left side of the decimal do?

我的这个问题的标题不是很好,但希望我能在这个 post.

中解释更多
import java.io.*;
import java.text.*;
public class Output {
public static void main(String[] args) {

    /*double number = 438.978;
    /*UpperCase <- naming convention for classes.DecimalFormat x = new DecimalFormat("#.#");
    System.out.println(x.format(number));*/

    double number = 43.97;
    DecimalFormat x = new DecimalFormat(".###");
    System.out.println(x.format(number));

  }
}

不要介意评论。在我的 Gr 11 Comp Sci class 期间,我问我的老师小数点左边的主题标签(第 11 行 )是否对双数有任何影响,我们试了一下a class 我们发现它并没有改变 System.out.println 语句的输出。

~/workspace/Java/ $ java Output
43.97

谁能给我解释一下小数点左边参数的用途?有人编程让它做某事所以我只是好奇。

# 格式化数字,但丢弃零。由于您的号码在小数点后有两位数,因此第三个格式字符将被忽略。如果你有一个小数点后有四位数字的数字,它们将减少到三位有效数字。

根据DecimalFormat docs #用于有条件地显示数字。

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

请注意 # 使用的数量很重要:

DecimalFormat x = new DecimalFormat(".###");
System.out.println(x.format(43.9711111)); // 43.971

就像其他人所说的那样 # 格式化一个数字但丢弃零。

在您将 .### 应用于像 12.34 这样的双精度的示例中,它 格式化为 12.340 但由于它会掉零才不是。

# 放在小数点前也会发生同样的情况,例如###.###格式12.34 显示 012.340 但由于它丢弃零,因此显示为 12.34.

所以在之前#小数实际上什么都不做。

小数点前 有用的示例,因此您可以看到小数点前的格式 can 工作是 0它格式化数字但 删除零,也可以在 DecimalFormat 中使用。像 000.000 这样的模式应用于 12.34 会导致 012.340:

double d = 12.34;
DecimalFormat df = new DecimalFormat("000.000");
System.out.print(df.format(d));

0# 等模式在 DecimalFormat.

中定义