winforms 在c#中如何将字符串格式化为十进制值?

lstz6jyr  于 2023-03-09  发布在  C#
关注(0)|答案(2)|浏览(147)

下面的代码:

string myDecimalString = "9000000,10";
decimal myDecimal = Convert.ToDecimal(myDecimalString);

Console.WriteLine(myDecimal.ToString());

下面的代码写9000000,10作为输出,但是我想要9.000.000,10作为输出。myDecimalString中的值可以不同,所以我需要一个通用的解决方案...
希望你能帮助我。
最好的问候提姆戈

string myDecimalString = "9000000,10";
decimal myDecimal = Convert.ToDecimal(myDecimalString);

Console.WriteLine(myDecimal.ToString("N1"));

这是我能得到的最接近的结果,但在本例中,我得到的是9.000.000,1,而不是9.000.000,10

5tmbdcev

5tmbdcev1#

如果您需要特定的格式与组分隔符,您可以随时创建自定义数字格式信息,以您的喜好:

var nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ",";
nfi.NumberGroupSeparator = ".";
nfi.NumberGroupSizes = new int[] { 3 };

Console.WriteLine(9000000.10m.ToString("N2", nfi)); // 9.000.000,10

如果您知道哪种区域性具有所需的小数分隔符、组分隔符和组大小,则可以直接使用该区域性信息,类似于:

// 90,00,000.10
Console.WriteLine(9000000.10m.ToString("N2", new CultureInfo("en-IN")));
z9ju0rcb

z9ju0rcb2#

private string Format(string inp){
    string a = "90000000,10";
    var f = a.Split(',');
    var d = f[0].Reverse().ToArray();
    string res=d[0].ToString();
    for (int i = 1; i < d.Length; i++)
    {
        if (i%3==0)
        {
        res += '.';
    }
    res += d[i];
}
return res.Reverse().Aggregate("", (s, c) => s += c)+','+f[1];

}

相关问题