C#中的数字格式

时间:2013-05-21 12:30:30

标签: c# formatting numbers

我有这样的数字: -1.0001 -10000.01

我需要得到这个: -1.0001 -10000,01

要求: - 小数分隔符是“,” - 组分隔符是“” - 逗号之后的数字的一部分可以具有不同的长度,这取决于实际数据。

我尝试使用这个掩码:“### ### ## 0。####”来格式化数字。 当数字很大时 - 一切都很好,但是当它很小时 - 我从一个数字的左边得到空格。我明白了: “ - 1,0001” “ - 10 000,01”

据我所知,这些空间来自我使用的面具。

有一些解决方法,但它们不是那么美丽和​​美观。

有没有办法正确地做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:1)

当您发布时,stackoverflow会自动删除这些空格,但我认为您可以通过使用Trim来解决您的问题

something.ToString("### ### ##0.####").Trim();

答案 1 :(得分:1)

尝试使用NumberFormatInfo类格式化您的号码。我使用下面的代码来检查我的答案,它适用于我测试过的大/小案例:

    static void Main(string[] args)
    {
        double smallNumber = -1.01;
        double smallNumberMoreDigits = -1.0001;
        double bigNumber = -100000.001;
        double longNumber = 2.2347894612789;

        Thread.CurrentThread.CurrentCulture = new CultureInfo("ru", false);            

        Console.Out.WriteLine(smallNumber.ToString("#,0.####"));
        Console.Out.WriteLine(smallNumberMoreDigits.ToString("#,0.####"));
        Console.Out.WriteLine(bigNumber.ToString("#,0.####"));
        Console.Out.WriteLine(longNumber.ToString("#,0.####"));

        Console.Read();
    }

编辑: 一点点侦探工作(我查看了你的个人资料)告诉我你在俄罗斯。您在寻找俄罗斯通用号码格式吗?我已经改变了上面的代码。看看它是否符合您的要求。它给了我以下结果:

-1,01 -1,0001 -100000,001

第二次编辑: 添加了屏蔽以在小数位上获得更好的结果。