【问题标题】:C# format float to string with separators and padding 0C# 将浮点格式格式化为带有分隔符和填充 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}" 格式化了数千个,但我仍然找不到如何格式化小数以及如何正确填充分隔符。

无论配置的文化如何,都必须这样做:/

【问题讨论】:

标签: c# formatting number-formatting


【解决方案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();

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2019-08-27
    • 2013-03-28
    相关资源
    最近更新 更多