20

Cでは、printf()ステートメントを使用して、パラメーターリストで精度の長さを指定できます。

printf("%*.*f", 7, 3, floatValue);

ここで、アスタリスクはそれぞれ1番目と2番目の値に置き換えられます。

Android/Javaで同等のものを探しています。String.format()は例外をスローします。

編集:ありがとう、@ Tenner; それは確かに機能します。

4

4 に答える 4

16

私が使う

int places = 7;
int decimals = 3;

String.format("%" + places + "." + decimals + "f", floatValue);

少し醜いです(そして文字列の連結はうまく機能しません)が、それは機能します。

于 2012-09-11T18:33:44.520 に答える
4
System.out.print(String.format("%.1f",floatValue));

これにより、floatValueが小数点以下1桁の精度で出力されます。

于 2012-09-11T18:33:54.593 に答える
2

あなたはフォーマットをフォーマットすることができます:

String f = String.format("%%%d.%df", 7, 3);
System.out.println(f);
System.out.format(f, 111.1111);

これは出力します:

%7.3f
111,111

このような小さなヘルパーを使用することもできます:

public static String deepFormatter(String format, Object[]... args) {
    String result = format;
    for (int  i = 0; i != args.length; ++i) {
        result = String.format(result, args[i]);
    }

    return result;
}

次の呼び出しは、上記のコードと同等であり、を返し111,111ます。

deepFormatter("%%%d.%df", new Object[] {7, 3}, new Object[] {111.1111});

printfほどきれいではなく、入力形式が乱雑になる可能性がありますが、それを使用するとさらに多くのことができます。

于 2013-05-20T23:54:48.487 に答える
1

こんな感じです...

%AFWPdatatype

A-引数の数

F-フラグ

W- 幅

P-精度

String.format("%.1f",float_Val);

于 2012-09-11T18:39:32.180 に答える