2011-01-13 4 views
1

寄付金額を表す小数点の変数があります。現在、私はこれは私が最初の二つの例で満足していますが、したい以下の出力(USロケールを与えられた)

1 -> $1.00 
2 -> $2.00 
0.5 -> $0.50 

を与えるSO-

DonationAmount.ToString("C"); 

のように通貨として画面上に表示しています「0.5」は「50c」と表示されます。

私の現在のソリューションは、conditional-

if (DonationAmount > 1) 
    return (DonationAmount * 100m).ToString() + "c"; 
else 
    return DonationAmount.ToString("C"); 

である、より良い方法はありますか?

答えて

3

文字列のフォーマットを "50c"にする独自のカスタムフォーマッタ( "cents")を用意することができます。

IFormatProviderを実装することはそれほど難しくありません。これをやったら、String.Format()またはToString()を呼び出すときにパラメータとして渡します。

http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspxここではhttp://www.codeproject.com/KB/cs/custstrformat.aspxの例があります。

public class StringFormatInfo : IFormatProvider, ICustomFormatter 
{ 
    ... 
} 

return number.ToString("{0:cents}", new StringFormatInfo()); 
関連する問題