[英]Best way to convert decimal or string to currency in C#?
我一直试图找到最好的方法将十进制/字符串转换为货币取决于我的选择。
public static string returnWaluta(string varS, string varSymbol) {
decimal varD = decimal.Parse(varS);
if (varSymbol == "EUR") {
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR", false);
return String.Format("{0:c}", varD);
} else if (varSymbol == "PLN") {
Thread.CurrentThread.CurrentCulture = new CultureInfo("pl-PL", false);
return String.Format("{0:c}", varD);
} else if (varSymbol == "USD") {
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
return String.Format("{0:c}", varD);
} else {
// Not handled currency
MessageBox.Show(varSymbol);
return varS.ToString();
}
}
public static string returnWaluta(decimal varS, string varSymbol) {
if (varSymbol == "EUR") {
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR", false);
return String.Format("{0:c}", varS);
} else if (varSymbol == "PLN") {
Thread.CurrentThread.CurrentCulture = new CultureInfo("pl-PL", false);
return String.Format("{0:c}", varS);
} else if (varSymbol == "USD") {
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false);
return String.Format("{0:c}", varS);
} else {
// Not handled currency
MessageBox.Show(varSymbol);
return varS.ToString();
}
}
这是好的方法,还是我可以做得更好? 我从SQL数据库中获取数据。 我得到十进制值和货币(如欧元,美元,波兰兹罗提)。 这似乎有效,但也许有更好的选择? 另外现在这是单线程应用程序,当我更改Thread.CurrentThread.CurrentCulture时,我是进行全局更改还是暂时直到我从方法返回?
带着敬意,
愤怒的少年
您可以将所需的文化作为第一个参数传递给string.Format
。 这比每次更改当前线程更好。 您可能想要设置某种地图或字典,从而为您创建从货币代码到文化代码的映射 - 这将大大减少此处的代码行数。
return string.Format(new CultureInfo(map[currencyCode], false), "{0:c}", varD);
或者,如果您根据货币代码存储CultureInfo实例的地图,您将拥有:
return string.Format(cultureMap[currencyCode], "{0:c}", varD);
Convert.ToDecimal()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.