c#中的数字格式

本文关键字:格式 数字 | 更新日期: 2023-09-27 18:14:30

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

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

要求:—十进制分隔符为","-组分隔符为" "-逗号后的数字部分可以有不同的长度,这取决于实际数据。

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

据我所知,这些空格来自我使用的掩码。

有一些变通的方法,但它们不是那么漂亮和美观。

有什么方法可以正确地做到这一点吗?

谢谢!

c#中的数字格式

尝试使用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, 010001-100000年、001年

第二个编辑:添加遮罩以获得更好的小数点效果。

当你发布时,空格被stackoverflow自动删除,但我认为你可以通过使用像

这样的Trim来解决你的问题
something.ToString("### ### ##0.####").Trim();