2012-03-22 9 views
14

strings.xmlに1つの文字列内のパラメータを入れたいと考えています。このパラメータは2倍の値にする必要があります。だから私は%1$fを使う。ここに - http://developer.android.com/reference/java/util/Formatter.html多くの例がありますが、私はいくつかのdouble/floatのパラメータを持っていて、2番目のものだけが.の後に2桁しかないようにしたいのですが?私は%2$.2fまたは%2.2$fのような組み合わせを使用しようとしました。彼らの働きもありませんでした。 %.1fも機能しません。 float/doubleの値をstrings.xmlの中で "カスタマイズ"する方法は誰にも分かりますか?ありがとう。strings.xmlのドットの後に2桁の二重のパラメータがありますか?

答えて

-5

それが私だったら、私は単純な値などのリソースの値を格納し、その後、それらは表示されている方法を制御するフォーマッタメソッドを使用すると思い、大体この

よう
public String formatFigureTwoPlaces(float value) { 
    DecimalFormat myFormatter = new DecimalFormat("##0.00"); 
    return myFormatter.format(value); 
} 

public String formatFigureOnePlace(float value) { 
    DecimalFormat myFormatter = new DecimalFormat("##0.0"); 
    return myFormatter.format(value); 
} 
+26

おかげで、男を表示したい場合、私は...のようにうまく機能.2f' '%1 $を監督しなければなりません。 – lomza

+2

ここのコメントは本当の答えです!あなたはこの質問に対する別の答えとしてそれを置くべきです。私はほとんどそれを見ていない。 – accordionfolder

+0

コメントのIomzaによる回答は実際の解決策です – Kachi

-2

私は今、この応答があること私はあなたが小数をしたいとき、Androidは複数のパラメータの置換で吸う

と共通のスタイル%でこれをフォーマットする最善の解決策

a.bf:遅すぎる到着...しかし、私は他の人々を助けることができるように願っています発見した(そして、これらの種類のresourc ES)進文字列%などのパラメータのn $ sのを入れて、コード内でString.Formatの(...)



例と私の変換に適用されます。


をINCORRECT WAY:XMLファイルに

//:

<string name="resource1">You has a desviation of %1$s and that is a %2$.2f%% percentage.</string> 

//そしてによる最後の行は、例外が発生しますので、アンドロイド代替資源システムにJavaファイル

String sresult = getString(R.string.resource1, svalue, spercentage); // <-- exception! 

このソリューションは、技術的には正しいが間違っていました。



CORRECT WAY/SOLUTION:

単純に文字列に二番目のパラメータに変換します。

コードで
<string name="resource1">You has a desviation of %1$s and that is a %2$s percentage.</string> 

そして今:ちょうどここに@デビッドAiramの答えに追加する

... 

    // This is the auxiliar line added to solve the problem 
    String spercentage = String.format("%.2f%%",percentage); 

    // This is the common code where we use the last variable. 
    String sresult = getString(R.string.resource1, svalue, spercentage); 
+0

あなたの「間違った」例では 'spercentage'のタイプは何ですか?私は@Nik Reimanが指摘しているように、 'String'であると推測しています。つまり、'%2 $ .2f'で)浮動小数点として渡す際に例外が発生するのは不思議ではありません。この「答え」は不完全で誤解を招く。 – BadCash

+0

私はまた、文字列リソースから動作するようにフォーマットされたfloatを取得することはできません。そして、私はfloatを渡しています。文字列リソースで "%1 $ 0.6f"を使用していますが、例外が発生しました。java.util.MissingFormatWidthException:%01 $ .6fなんとか乱暴になっています。この回答は正しいです。 – Aaron

64

。彼が与えている「間違った」解決策は実際には正しいが、ちょっとした調整が必要だ。XMLファイルが含まれている必要があります

<string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string> 

を今すぐJavaコードで:

String svalue = "test"; 
float sfloat= 3.1415926; 
String sresult = getString(R.string.resource1, svalue, sfloat); 

@デビッドAiram報告が必要です%f付き書式指定子へStringジャムしようとしているからである例外を浮動小数点型。 floatを使用し、そのような例外はありません。

また、Float.valueOf()を使用すると、入力データが元々文字列だった場合(たとえば、EditTextなど)に文字列をfloatに変換できます。ただし、は常に操作を試行/キャッチし、NumberFormatExceptionケースを処理する必要があります。この例外はチェックされていないためです。私にとって

+0

ありがとう!私の時間を節約しました –

0

% .1f仕事はあなたが後にのみ1桁「」

関連する問題