32

double(小数)でこの問題が発生しました。
double = 1.234567 の場合String.format("%.3f", myString);
、結果は 1.234 です。

しかし、私の倍が10
のとき結果は10,000
になりますこれを10にしたいです

「役に立つ」場合にのみ小数を表示する必要があると言う方法はありますか?

これに関するいくつかの投稿を見ましたが、それは php または c# であり、これに関する Android/Java の何かが見つかりませんでした (多分私はよく見えません)。

皆さんがこれで私を助けてくれることを願っています.

編集、今のところ私は次のようなものを使用していますmyString.replace(",000", "");
:

4

3 に答える 3

93

# パラメーターを使用したDecimalFormatが最適です。

public static void main(String[] args) {

        double d1 = 1.234567;
        double d2 = 2;
        NumberFormat nf = new DecimalFormat("##.###");
        System.out.println(nf.format(d1));
        System.out.println(nf.format(d2));
    }

結果として

1.235
2
于 2012-08-06T10:30:40.853 に答える
2

ダブルスは使用しないでください。精度が低下する可能性があります。これが汎用関数です。

public static double round(double unrounded, int precision, int roundingMode)
{
    BigDecimal bd = new BigDecimal(unrounded);
    BigDecimal rounded = bd.setScale(precision, roundingMode);
    return rounded.doubleValue();
}

あなたはそれを呼び出すことができます

round(yourNumber, 3, BigDecimal.ROUND_HALF_UP);

「精度」とは、必要な小数点の数です。

ここからコピーします。

于 2012-08-06T10:27:40.507 に答える
0

それを試してみてください

double amount = 1.234567 ;
  NumberFormat formatter = new DecimalFormat("##.###");
  System.out.println("The Decimal Value is:"+formatter.format(amount));
于 2012-08-06T10:29:08.317 に答える