转换货币值

时间:2013-02-21 17:16:50

标签: c# .net .net-4.0 currency cultureinfo

我正在尝试将一种货币转换为另一种货币

例如

  decimal value= 0;
  var text = "£135";
  decimal.TryParse(text, NumberStyles.Any, new CultureInfo("fa-IR"), out value);

此结果为“0”。我在这里做错了吗?

或者还有其他方法吗?

任何帮助都很感激!!!

更新

我累了

var value= string.Format(new CultureInfo("en-US"), "{0:c}", text);
then value = "£135"

var value = string.Format(new CultureInfo("en-US", false), "{0:c}", text);
then value = "£135" 

var value = string.Format(new CultureInfo("en-US", false), "{0:c}", "135");
then value = "135"

2 个答案:

答案 0 :(得分:3)

如果你想要货币符号

,你应该做更多这样的事情
var s = 135.ToString("C", new CultureInfo("en-US"));

这将为您提供$ 135.00

但是,您只能处理非字符串值。所以,如果你想来回转换它们,那么你需要先从一个字符串回到十进制

  var s = 135.ToString("C", new CultureInfo("en-US"));
  //$135.00
  decimal x;
  var tryParse = decimal.TryParse(s, NumberStyles.Currency, new CultureInfo("en-US"), out x);
  var s1 = x.ToString("C", new CultureInfo("fa-IR"));
  //ريال 135/00

答案 1 :(得分:1)

"£135"Contains Currency Symboldecimal.TryParse无法获取符号..因此只返回"0" ...

尝试通过符号传递值然后它可以工作....其他明智地在代码中使用string.Format ...

decimal value= 0;
var text = "135";
decimal.TryParse(text, NumberStyles.Any, new CultureInfo("fa-IR"), out value);