如何在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