40

我试图在显示字符串时不使用 ',' 字符作为千位分隔符,而是使用空格。我想我需要定义一种自定义文化,但我似乎没有做对。任何指针?

例如:将 1000000 显示为 1 000 000 而不是 1,000,000

(不,String.Replace()不是我想使用的解决方案:P)

4

4 回答 4

77

我建议你找到一个NumberFormatInfo最接近你想要的(即它与千位分隔符分开),调用Clone()它然后设置NumberGroupSeparator属性。(如果您要使用货币格式来格式化数字,您需要CurrencyGroupSeparator改为/也进行更改。)将其用作调用string.Formatetc 的格式信息,您应该没问题。例如:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = (NumberFormatInfo)
            CultureInfo.InvariantCulture.NumberFormat.Clone();
        nfi.NumberGroupSeparator = " ";

        Console.WriteLine(12345.ToString("n", nfi)); // 12 345.00
    }
}
于 2009-04-15T15:12:00.663 回答
9

使用不同的千位分隔符创建您自己的NumberFormatInfo (导数)。

于 2009-04-15T15:12:08.913 回答
7

Jon Skeet one 有一个稍微简单的版本:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = new NumberFormatInfo {NumberGroupSeparator = " ", NumberDecimalDigits = 0};

        Console.WriteLine(12345678.ToString("n", nfi)); // 12 345 678
    }
}

并且可以跳过“nfi”初始化并将其作为参数直接放入 ToString() 方法中。

于 2014-01-24T13:14:35.263 回答
3

最简单的方法...

num.ToString("### ### ### ### ##0.00")
于 2009-04-15T15:18:55.763 回答