将十进制值的格式设置为带前导空格的字符串

本文关键字:空格 字符串 设置 十进制 格式 | 更新日期: 2023-09-27 18:15:50

对于小于 100 的值,如何将十进制值格式化为逗号/点后带有一位数字和前导空格的字符串?

例如,十进制值 12.3456 应输出为具有单个前导空格的 " 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.

将十进制值的格式设置为带前导空格的字符串

此模式{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"

另一个带有字符串插值 (C# 6+(:

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

表达式返回:" 123.4560"

value.ToString("N1");

更改更多小数位的数字。

编辑:错过了填充位

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

很多很好的答案,但这是我使用最多的答案(c# 6+(:

Debug.WriteLine($"{height,6:##0.00}");
//if height is 1.23 =>   "  1.23"
//if height is 0.23 =>   "  0.23"
//if height is 123.23 => "123.23"

上述所有解决方案都将对小数进行四舍五入,以防万一有人正在寻找解决方案而不四
舍五入

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

请注意,使用字符串时,"." 可以是",",具体取决于区域设置。格式。

string.Format("{0,5:###.0}", 0.9)     // Output  "   .9"
string.Format("{0,5:##0.0}", 0.9)     // Output  "  0.9"

我最终使用了这个:

string String_SetRPM = $"{Values_SetRPM,5:##0}";
// Prints for example "    0", " 3000", and "24000"
string String_Amps = $"{(Values_Amps * 0.1),5:##0.0}";
// Print for example "  2.3"

多谢!

实际上,在 0.123 的情况下,接受的答案将产生".1">,这可能是意想不到的。

因此,我更喜欢使用 0.0 而不是 ###.0 作为数字格式。但这取决于您的需求(请参阅我评论的底部(。

例子:

string.Format("{0,5:0.0}", 199.34) // Output "199.3"
string.Format("{0,5:0.0}",  19.34) // Output " 19.3"
string.Format("{0,5:0.0}",   0.34) // Output "  0.3"

解释 {0,5:0.0}

Pattern: {{

index},{padding}:{numberFormat}}

  • {index}:要从传递给字符串的参数列表中格式化的参数的从零开始的索引。格式("格式", 参数0, 参数1, 参数2...(
  • {填充}:要填充的前导空格数
  • {数字格式
  • }:应用于数字的实际数字格式

填充文档:https://learn.microsoft.com/en-us/dotnet/standard/base-types/how-to-pad-a-number-with-leading-zeros

自定义数字格式:https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings

值得比较 0 和 # 十进制说明符之间的差异:

0 十进制说明符:https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#Specifier0

# 十进制说明符:https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SpecifierD