C# 将浮点格式格式化为带有分隔符和填充 0 的字符串
Posted
技术标签:
【中文标题】C# 将浮点格式格式化为带有分隔符和填充 0 的字符串【英文标题】:C# format float to string with separators and padding 0 【发布时间】:2015-01-13 15:33:53 【问题描述】:我需要将整数和浮点数格式化为字符串。
如果它是浮点数,我需要 ,
作为小数分隔符。而.
必须是千位分隔符。
另外,我需要用0
完成剩余的小数。一些例子:
float:
45,3: 000.045,30
125: 000.125,00
83560.195: 083.560,19
int:
45: 000.045
5789: 005.789
我设法用 "0:#,0"
格式化了数千个,但我仍然找不到如何格式化小数以及如何正确填充分隔符。
无论配置的文化如何,都必须这样做:/
【问题讨论】:
你试过用谷歌搜索这个..吗?有很多不同的方法可以做到这一点.. 这是以前的SO
帖子,可以为您提供许多答案提示和您可以采取的方向。 ***.com/questions/105770/…
我认为你应该使用msdn.microsoft.com/en-us/library/system.iformatprovider.aspx
谢谢大家。我在谷歌上搜索它并且能够学习部分解决方案,但无法找到我在这里询问的部分。
【参考方案1】:
这适用于给定的示例:
NumberFormatInfo numberFormat = new NumberFormatInfo
NumberDecimalSeparator=",",
NumberGroupSeparator="."
;
string formatFloat(float f)
return f.ToString("0####,0.00",numberFormat);
string formatInt(int i)
return i.ToString("0####,0",numberFormat);
【讨论】:
很好的解决方案,看起来独立于当前的文化。如果想重用格式信息对象,可以使用static readonly NumberFormatInfo numberFormat = NumberFormatInfo.ReadOnly(new NumberFormatInfo NumberDecimalSeparator = ",", NumberGroupSeparator = ".", );
以确保非常安全。【参考方案2】:
您可以将文化设置为欧洲文化和格式:
string.Format(new CultureInfo("de-DE"), "0:000,000.00", num).Dump();
【讨论】:
以上是关于C# 将浮点格式格式化为带有分隔符和填充 0 的字符串的主要内容,如果未能解决你的问题,请参考以下文章