2011-11-28 28 views
41

コンマ/ドットの後に1桁の文字列に小数点以下の値を書式設定するにはどうすればよいですか?先頭のスペースで文字列に小数点をフォーマットする

たとえば、小数の値が12.3456の場合は、先行スペースが1つだけの" 12.3"と出力されます。 10.011" 10.0"となります。 123.123は、私は、標準/カスタムの文字列フォーマットで動作するソリューション、探しています"123.1"

、より多くの小数点以下の桁数のため、すなわち

decimal value = 12.345456; 
Console.Write("{0:magic}", value); // 'magic' would be a fancy pattern. 

答えて

70

このパターン{0,5:###.0}を逃し動作するはずです:

string.Format("{0,5:###.0}", 12.3456) //Output " 12.3" 
string.Format("{0,5:###.0}", 10.011) //Output " 10.0" 
string.Format("{0,5:###.0}", 123.123) //Output "123.1" 
string.Format("{0,5:###.0}", 1.123) //Output " 1.1" 
string.Format("{0,5:###.0}", 1234.123)//Output "1234.1" 
+0

もっとも確かです!ありがとう! :) –

+3

これについての良いリファレンスはありますか?すなわち、私のユースケースがわずかに異なる場合は、それぞれの部分は何をします。 – tjrobinson

+4

@tjrobinsonすべてがMSDNにあります:http://msdn.microsoft.com/en-us/library/0c899ak8.aspxおよびhttp://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – nemesv

5
value.ToString("N1"); 

変更番号です。

EDIT:パディングビット

value.ToString("N1").PadLeft(1); 
+0

ありがとうございました。しかし、私の場合、PadLeftの使用はうまくいかないでしょう。{0:...}プレースホルダーの文字列には、10進値よりも多くのテキストが含まれています。 –

+0

@ Taz: 'PadLeft(5) 'と書かなければなりません。パラメータは、パディングする文字列の合計長です。 – Jan

+0

@Jakob:なぜ 'string.Format()'を使用できないのですか? – Jan

1

を上記のすべてのソリューションは、誰かが
を丸めずに解決策を探しているだけの場合には、小数点以下の四捨五入を行います

decimal dValue = Math.Truncate(1.199999 * 100)/100; 
dValue .ToString("0.00");//output 1.99 
関連する問題