如何将十进制值格式化为逗号/点后有一位数字的字符串,如果小于100,则使用前导空格?例如,十进制值12.3456应输出为" 12.3",并带有一个前导空格。10.011是" 10.0"。123.123是"123.1"我正在寻找一个解决方案,与标准/自定义字符串格式,即工程。
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.
qmb5sa221#
下面的模式{0,5:###.0}应该可以工作:
{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"
zqdjd7g92#
另一个字符串插值(C# 6+):
double x = 123.456; $"{x,15:N4}"// left pad with spaces to 15 total, numeric with fixed 4 decimals
表达式返回:" 123.4560"
" 123.4560"
8i9zcol23#
value.ToString("N1");
将数字更改为更多小数位。编辑:丢失填充位
value.ToString("N1").PadLeft(1);
9gm1akwq4#
有很多很好的答案,但这是我用得最多的(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"
omqzjyyz5#
以上所有的解决方案将做四舍五入的小数,以防万一有人正在寻找解决方案没有四舍五入
decimal dValue = Math.Truncate(1.199999 * 100) / 100; dValue .ToString("0.00");//output 1.99
d8tt03nd6#
请注意,当使用string. Format时,“.”可能是“,”,具体取决于Region设置。
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"
多谢了!
bq3bfh9z7#
实际上,在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}
模式:{{index},{padding}:{numberFormat}}
比较一下0和# decimal说明符的区别:
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
7条答案
按热度按时间qmb5sa221#
下面的模式
{0,5:###.0}
应该可以工作:zqdjd7g92#
另一个字符串插值(C# 6+):
表达式返回:
" 123.4560"
8i9zcol23#
将数字更改为更多小数位。
编辑:丢失填充位
9gm1akwq4#
有很多很好的答案,但这是我用得最多的(c# 6+):
omqzjyyz5#
以上所有的解决方案将做四舍五入的小数,以防万一有人正在寻找解决方案没有四舍五入
d8tt03nd6#
请注意,当使用string. Format时,“.”可能是“,”,具体取决于Region设置。
我最终使用了这个:
多谢了!
bq3bfh9z7#
实际上,在0.123的情况下,接受的答案将产生**”.1”**,这可能是意外的。
因此,我更喜欢使用0.0而不是###.0作为数字格式。但这取决于你的需要(见我评论的底部)。
示例:
正在解释{0,5:0.0}
模式:{{index},{padding}:{numberFormat}}
填充文档: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和# decimal说明符的区别:
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