1

double をフォーマットするために次のコードを変更しています: "###,##0.#########"。通常は正常に動作しますが、「123」のような数字がある場合、「123.0」と表示されます。その場合、小数点以下を出力しないようにするにはどうすればよいですか?「123」を表示したいだけです。

Java チュートリアルを読んだ後、フォーマット文字列の小数点以下はすべてポンド記号であり、0 ではないため、小数点以下は何も表示されないように見えますが、そのように動作していません。

また、フォーマット文字列の小数点以下の最初の場所0 があるのはなぜですか?

編集:私の完全なコードは次のとおりです。私はこのプロジェクトに慣れていませんが、なぜこれが行われるのかを理解しようとしています:

textField = new TextField("field", Double.class) {
    public org.apache.wicket.util.convert.IConverter getConverter(
            Class type) {
        DoubleConverter converter = (DoubleConverter) DoubleConverter.INSTANCE;
        java.text.NumberFormat numberFormat = converter
                .getNumberFormat(getLocale());
        java.text.DecimalFormat decimalFormat = (java.text.DecimalFormat) numberFormat;
        decimalFormat.applyPattern("###,##0.#########");
        converter.setNumberFormat(getLocale(),
                decimalFormat);
        return converter;
    };
};
4

1 に答える 1

-1

答えの後に 0 を取得する理由は、答えをdoubleに設定したためです。倍精度は小数の答えになるように設定されています。小数点以下の答えがない場合は、小数点以下に何かがあるはずなので、自動的に 0 として配置されます。

答えの後の 0 を取り除きたい場合、最も簡単な方法は答えを整数に変更することです。ただし、if ステートメントを使用して、小数点以下の 0 が 1 つしかないかどうかを確認すると、整数の答えと二重の答えの両方を持つことができます。

于 2013-11-14T19:33:19.320 に答える