如何使用 Java DecimalFormat 强制使用小数点?
How to force a decimal point using Java DecimalFormat?
我有两个双打代码:
double a = 2000.01;
double b = 2000.00;
String pattern = "0.##";
DecimalFormat dc = new DecimalFormat(pattern); // <- "0.##" does not work
System.out.println(dc.format(a));
System.out.println(dc.format(b));
需要一个会产生以下输出的模式:
2000.01
2000.
即使不打印零,b 也有小数点
使用此模式:#0.00
它应该是这样的:
double a = 2000.01;
double b = 2000.00;
String pattern = "#0.00";
DecimalFormat dc = new DecimalFormat(pattern);
System.out.println(dc.format(a));
System.out.println(dc.format(b));
打印:
2000.01
2000.00
扩展 DecimalFormat
public class MDF extends DecimalFormat {
public String format(double d) {
String s = super.format(d);
if (!s.contains(".")) {
return s + ".";
}
return s;
}
}
一种选择是使用 'DecimalFormat.setDecimalSeparatorAlwaysShown' 始终包含小数。
样本:
double a = 2000.01;
double b = 2000.00;
String pattern = "0.##";
DecimalFormat df = new DecimalFormat(pattern);
df.setDecimalSeparatorAlwaysShown(true);
System.out.println(df.format(a));
System.out.println(df.format(b));
示例输出:
2000.01
2000.
我有两个双打代码:
double a = 2000.01;
double b = 2000.00;
String pattern = "0.##";
DecimalFormat dc = new DecimalFormat(pattern); // <- "0.##" does not work
System.out.println(dc.format(a));
System.out.println(dc.format(b));
需要一个会产生以下输出的模式:
2000.01
2000.
即使不打印零,b 也有小数点
使用此模式:#0.00
它应该是这样的:
double a = 2000.01;
double b = 2000.00;
String pattern = "#0.00";
DecimalFormat dc = new DecimalFormat(pattern);
System.out.println(dc.format(a));
System.out.println(dc.format(b));
打印:
2000.01
2000.00
扩展 DecimalFormat
public class MDF extends DecimalFormat {
public String format(double d) {
String s = super.format(d);
if (!s.contains(".")) {
return s + ".";
}
return s;
}
}
一种选择是使用 'DecimalFormat.setDecimalSeparatorAlwaysShown' 始终包含小数。
样本:
double a = 2000.01;
double b = 2000.00;
String pattern = "0.##";
DecimalFormat df = new DecimalFormat(pattern);
df.setDecimalSeparatorAlwaysShown(true);
System.out.println(df.format(a));
System.out.println(df.format(b));
示例输出:
2000.01
2000.