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