web-dev-qa-db-ja.com

先行スペースを含む文字列に10進値をフォーマットします

コンマ/ドットの後の1桁の数字と100未満の値の先頭スペースを含む文字列に10進値をフォーマットするにはどうすればよいですか?

たとえば、12.3456の10進数値は、先頭にスペースを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.
50
Jakob Gade

このパターン{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"
86
nemesv

文字列補間を使用したもう1つ(C#6+):

double x = 123.456;
$"{x,15:N4}"// left pad with spaces to 15 total, numeric with fixed 4 decimals

式の戻り値:" 123.4560"

8
value.ToString("N1");

小数点以下の桁数を変更します。

編集:パディングビットがありません

value.ToString("N1").PadLeft(1);
6
Taz

上記のすべてのソリューションは、誰かが丸めずにソリューションを探している場合に備えて、小数の丸めを行います

decimal dValue = Math.Truncate(1.199999 * 100) / 100;
dValue .ToString("0.00");//output 1.99
0
Anshul Nigam