使用 DecimalFormat 删除最后三个零
Removing last three zeros with DecimalFormat
我正在使用 jfreechart 以毫秒为单位显示轴值,但我想以秒为单位显示轴标签,所以我会使用 domainAxis.setNumberFormatOverride(new DecimalFormat("???"));
那么删除最后三个零的语法是什么?例如:1.000、2.000、3.000 到 1、2、3。
试试这个
String label= "1.000"
String slabel= new DecimalFormat("0.####").format(Double.parseDouble(label));
System.out.println(slabel);
多亏了 this other post 我成功地除以 1000
子类化 NumberFormat
所以最终代码很简单:
private static final NumberFormat THOUSANDS = new NumberFormat() {
@Override
public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
new DecimalFormat().format(number / 1000D, toAppendTo, pos);
return toAppendTo;
}
@Override
public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
return format((double) number, toAppendTo, pos);
}
@Override
public Number parse(String source, ParsePosition parsePosition) {
return null;
}
};
然后调用:
domainAxis.setNumberFormatOverride(THOUSANDS);
我正在使用 jfreechart 以毫秒为单位显示轴值,但我想以秒为单位显示轴标签,所以我会使用 domainAxis.setNumberFormatOverride(new DecimalFormat("???"));
那么删除最后三个零的语法是什么?例如:1.000、2.000、3.000 到 1、2、3。
试试这个
String label= "1.000"
String slabel= new DecimalFormat("0.####").format(Double.parseDouble(label));
System.out.println(slabel);
多亏了 this other post 我成功地除以 1000
子类化 NumberFormat
所以最终代码很简单:
private static final NumberFormat THOUSANDS = new NumberFormat() {
@Override
public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
new DecimalFormat().format(number / 1000D, toAppendTo, pos);
return toAppendTo;
}
@Override
public StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos) {
return format((double) number, toAppendTo, pos);
}
@Override
public Number parse(String source, ParsePosition parsePosition) {
return null;
}
};
然后调用:
domainAxis.setNumberFormatOverride(THOUSANDS);