web-dev-qa-db-ja.com

必要な場合にのみ、2進数の小数を表示

この問題は2倍(10進数)で発生しました。
double = 1.234567の場合、String.format("%.3f", myString);を使用します
結果は1.234になります

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

彼らはそれが「有用」であるときだけ彼が小数を示す必要があると言う方法ですか?

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

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

編集、今のところ私はこのようなものを使用します:myString.replace(",000", "");
しかし、私は彼らがこのためのより「フレンドリーな」コードだと思います。

30
Bigflow

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
79
jolivier

ダブルを使用しないでください。精度がいくらか失われる可能性があります。これが汎用関数です。

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

「精度」は、希望する小数点の数です。

ここからコピー

2
Chirag

試してみる

double amount = 1.234567 ;
  NumberFormat formatter = new DecimalFormat("##.###");
  System.out.println("The Decimal Value is:"+formatter.format(amount));
0