Cでは、printf()ステートメントを使用して、パラメーターリストで精度の長さを指定できます。
printf("%*.*f", 7, 3, floatValue);
ここで、アスタリスクはそれぞれ最初の値と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));
これは、小数点以下1桁の精度でfloatValueを出力します。
あなたはフォーマットをフォーマットすることができます:
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);