编程语言
首页 > 编程语言> > 如何在C#中使用全球化将英语十进制转换为西班牙语十进制

如何在C#中使用全球化将英语十进制转换为西班牙语十进制

作者:互联网

我使用Visual Studio2008.我的桌面应用程序在不同的区域设置中运行.

在我的代码中,我在英语格式的字符串变量中有十进制数字,我想使用Convert.ToDecimal()将它们转换为十进制变量,并将区域设置设置为“西班牙语(厄瓜多尔)”.

当我执行以下操作时:

string myNum = "0.04";  
decimal myDec = Convert.ToDecimal(myNum); // here im getting 4 instead of 0,04

当我用的时候

Convert.ToDecimal(myNum, new CultureInfo("en-US")); // i got 0.04, but i want 0,04

我不能为每个语句添加新的CultureInfo(“ en-Us”),因为我已使用转换语句超过100次.

我该如何做到这一点.请帮忙??

解决方法:

与其每次都创建一个新的区域性,不如使用CultureInfo.InvariantCulture-我个人将使用decimal.Parse或decimal.TryParse而不是Convert.ToDecimal.不过只是我个人的喜好.在IIRC中,它们的区别仅在于处理空输入.

但是,如果您只是反对每次都将其包含在代码中,那么最简单的解决方案是编写自己的helper方法并调用它.例如:

public static decimal ParseDecimalInvariant(string text)
{
    return decimal.Parse(text, CultureInfo.InvariantCulture);
}

顺便说一句,我希望您的代码中没有真正的字符串值.如果您有代表数字的字符串,只需将其更改为文字即可!

decimal myNum = 0.04m;

这比执行时解析要好得多:)

标签:globalization,c
来源: https://codeday.me/bug/20191208/2093745.html