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

Sam*_*sah 3 java format formatting class decimalformat

我这个问题的标题不太好,但希望我能在这篇文章中对此进行更多解释。

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));

  }
}
Run Code Online (Sandbox Code Playgroud)

别介意评论。在我的 11 年级计算机科学课上,我问老师小数点左边的主题标签(第 11 行)是否对双数有任何影响,我们在课堂上尝试过,发现它并没有改变System.out.println语句。

~/workspace/Java/ $ java Output
43.97
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下小数点左边参数的用途吗?有人编程让它做某事,所以我很好奇。

Mar*_*ark 5

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

在您的示例中,您像格式化一样应用双精度.###值,但由于它会删除零,所以不会。12.3412.340

# 当您在小数点前放置 a 时,也会发生同样的情况,例如,###.###格式化12.34 显示012.340,但由于它会删除零,因此显示为12.34

所以小数点# 前的a 实际上什么也不做。

小数点有用的示例,因此您可以看到小数点前可以工作的格式是0格式化数字但不删除零,并且也可以在 DecimalFormat 中使用。类似的模式000.000应用于12.34结果012.340

double d = 12.34;
DecimalFormat df = new DecimalFormat("000.000");
System.out.print(df.format(d));
Run Code Online (Sandbox Code Playgroud)

0诸如、等模式在DecimalFormat#中定义。