2017-10-30 7 views
-2

ToString()、1.99.ToString( "SOME FORMAT HERE")のようなものを使用して、額のセントだけを表示することはできますか?double.ToString(???) - 小数点以下を切り捨てて小数点以下2桁を表示する形式ですか?

1.99を「1ドル99セント」と表示したい場合はどうすればいいですか

($"{ Convert.ToInt32(amount) } dollar(s) { amount.ToString("???") } cents")

+0

ありませんあなたはこれを達成するためにToStringメソッドをオーバーライドする必要があります – Maxqueue

答えて

0

これは、金額が2倍の場合に有効です。 amountが文字列の場合、次の行にToString()は必要ありません。これは、あなたの質問に記載されている形式を想定している注:私はあなただけToString方法でこれを行うことができるとは思わない

string line = string.Concat("$", amount.ToString().Split('.')[0], " dollar(s) ", amount.ToString().Split('.')[1].Substring(0,2), " cents"); 
0

ので、ここでもう一つの方法です。

あなたが最初にこれを行うことにより、小数部分を取得することができます:

var decimalPart = yourDouble - (int)yourDouble; 

次に、あなたが倍小数100の一部とは、int型に結果を変換することができます。左に2桁の文字列を、あなただけのパッド0にこれを変換するには

var twoDigits = (int)(decimalPart * 100); 

var result = twoDigits.ToString().PadLeft(2, '0'); 
0

私は(唯一のToStringメソッドを使用して、これを行うことができない)が、これはあなたが望むものはほとんどです。とにかく)

double d = 15.12; 
var str = d.ToString("0 dollar(s) .00 cents").Replace(".", string.Empty); 

、私はあなたがこれを行うための拡張メソッドを作成することをお勧め:

public static class Extensions 
{ 
    public static string ToFormattedString(this double number) 
    { 
     var integerPart = Convert.ToInt32(number); 
     var decimalPart = Convert.ToInt32((number - integerPart) * 100); 
     return String.Format("{0} dollar(s) {1} cents", integerPart, decimalPart); 
    } 
} 

用法:

Console.WriteLine(d.ToFormattedString()); 
関連する問題