4

有効数字による丸めに関する多くの質問と、次のような丸めを行うための新しい方法を提供する回答がありました。

任意の有効桁数への丸め

double を小数点以下 2 桁に丸める

これらの質問と解決策のほとんどは、2009 ~ 2010 年頃のものです。

数値と有効数字を指定して、指定された有効数字に制限された数値を出力する単純な組み込みメソッド (または Apache や Spring などのよく知られている標準ライブラリから) が必要です。

すなわち:

  • 123.456789 // 有効数字 2 桁: 120
  • 123.456789 // 有効数字 4 桁: 123.4
  • 123.456789 // 有効数字 7 桁: 123.4567
4

2 に答える 2

2

String 形式を使用してこれを行う良い方法を見つけました。どうやら、ユーザーは文字列形式「g」または「G」で最大有効桁数を指定できるようです。( http://developer.android.com/reference/java/util/Formatter.html )

印刷だけしたい場合はこちら。

public String toSignificantFiguresString(BigDecimal bd, int significantFigures){
    return String.format("%."+significantFigures+"G", bd);
}

これを変換する場合は次のとおりです。

public BigDecimal toSignificantFigures(BigDecimal bd, int significantFigures){
    String s = String.format("%."+significantFigures+"G", bd);
    BigDecimal result = new BigDecimal(s);
    return result;
}

実際の例を次に示します。

    BigDecimal bd = toSignificantFigures(BigDecimal.valueOf(12345678.123456789), 10);
    System.out.println("bd: " + String.format("%f",bd));

注意: double と float には精度の問題があるため、計算には BigDecimal を使用しています。)

于 2013-10-21T23:47:10.097 に答える
0

正しくありません。完璧にするには:

public String toSignificantFiguresString(BigDecimal bd, int significantFigures ){
    String test = String.format("%."+significantFigures+"G", bd);
    if (test.contains("E+")){
        test = String.format(Locale.US, "%.0f", Double.valueOf(String.format("%."+significantFigures+"G", bd)));
    }
    return test;
}
于 2016-02-04T22:16:47.957 に答える