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 的字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义组和小数分隔符将数字格式化为字符串而不更改精度

将数字数组格式化为具有最小宽度的货币

如何格式化带有千位分隔符和括号中的负数的数据透视表数字?

在碧玉报告中将字符串格式化为货币格式

ActionScript 3 将数字格式化为字符串 - 使用小数和千位分隔符

将数字格式化为字符串-带小数和千位分隔符