Cでは、printf()ステートメントを使用して、パラメーターリストで精度の長さを指定できます。
printf("%*.*f", 7, 3, floatValue);
ここで、アスタリスクはそれぞれ1番目と2番目の値に置き換えられます。
Android/Javaで同等のものを探しています。String.format()は例外をスローします。
編集:ありがとう、@ Tenner; それは確かに機能します。
Cでは、printf()ステートメントを使用して、パラメーターリストで精度の長さを指定できます。
printf("%*.*f", 7, 3, floatValue);
ここで、アスタリスクはそれぞれ1番目と2番目の値に置き換えられます。
Android/Javaで同等のものを探しています。String.format()は例外をスローします。
編集:ありがとう、@ Tenner; それは確かに機能します。
私が使う
int places = 7;
int decimals = 3;
String.format("%" + places + "." + decimals + "f", floatValue);
少し醜いです(そして文字列の連結はうまく機能しません)が、それは機能します。
System.out.print(String.format("%.1f",floatValue));
これにより、floatValueが小数点以下1桁の精度で出力されます。
あなたはフォーマットをフォーマットすることができます:
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ほどきれいではなく、入力形式が乱雑になる可能性がありますが、それを使用するとさらに多くのことができます。
こんな感じです...
%AFWPdatatype
A
-引数の数
F
-フラグ
W
- 幅
P
-精度
String.format("%.1f",float_Val);