C# 转换货币价值

C# 转换货币价值,c#,.net,.net-4.0,currency,cultureinfo,C#,.net,.net 4.0,Currency,Cultureinfo,我正在尝试将一种货币兑换成另一种货币 例如 此结果值为“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"

我正在尝试将一种货币兑换成另一种货币

例如

此结果值为“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"
“£135”
包含货币符号
十进制。TryParse
无法获取符号。。因此,只有它返回
“0”

尝试传递不带out符号的值,然后它会工作。。。。在代码中使用
string.Format

decimal value= 0;
var text = "135";
decimal.TryParse(text, NumberStyles.Any, new CultureInfo("fa-IR"), out value);
“£135”
包含货币符号
十进制。TryParse
无法获取符号。。因此,只有它返回
“0”

尝试传递不带out符号的值,然后它会工作。。。。在代码中使用
string.Format

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

如果您想要货币符号,您可能应该执行类似的操作

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

如果您想要货币符号,您可能应该执行类似的操作

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


@JustinPihony:As is的可能重复项说我尝试了
var value=string.Format(新的CultureInfo(“fa-IR”),“{0:c}”,text)给出了相同的值,即135英镑。。知道吗?阿拉伯字母是“里亚尔”(伊朗货币)。看起来它适用于文化,而不是数字。@mcalex:我传递了错误的值,犯了一个错误。我已经更新了这个问题。它仍然返回相同的值请注意,数据类型必须是数字(十进制,int)而不是字符串。因此,传递
135
而不是
“135”
可能重复的@JustinPihony:正如我所说的那样,我尝试了
var value=string.Format(新文化信息(“fa-IR”),“{0:c}”,text)给出了相同的值,即135英镑。。知道吗?阿拉伯字母是“里亚尔”(伊朗货币)。看起来它适用于文化,而不是数字。@mcalex:我传递了错误的值,犯了一个错误。我已经更新了这个问题。它仍然返回相同的值请注意,数据类型必须是数字(十进制,int)而不是字符串。因此,传递
135
而不是
“135”
类似
var value=string.Format(new-CultureInfo(“en-US”,false),“{0:c}”,“135”)
NumberStyles的内容。任何
都应该在第一步就考虑到这一点attempt@huMptyduMpty:是,否则给出var text=“135”的值;将获得作品…@Pandian:它将返回我期望的
135
位置
$135
。它缺少货币-symbol@Pandian:删除135周围的引号。i、 e.
var text=135
类似于
var value=string.Format(new-CultureInfo(“en-US”,false),“{0:c}”,“135”)
NumberStyles。任何
都应该在第一时间考虑到这一点attempt@huMptyduMpty:是,否则给出var text=“135”的值;将获得作品…@Pandian:它将返回我期望的
135
位置
$135
。它缺少货币-symbol@Pandian:删除135周围的引号。i、 e.
var text=135
这工作正常。但在我的例子中,我有一个
下拉列表
,在那里我们可以选择不同的货币。当所选值发生变化时,从下拉列表中获取货币,例如
En US
,并尝试转换文本框中的当前值,并使用新货币进行更新。这只是第一次。你知道为什么吗?你必须发布代码…不过,可能应该是一个单独的问题。把我和它联系起来,我就可以看一看了。这个很好用。但在我的例子中,我有一个
下拉列表
,在那里我们可以选择不同的货币。当所选值发生变化时,从下拉列表中获取货币,例如
En US
,并尝试转换文本框中的当前值,并使用新货币进行更新。这只是第一次。你知道为什么吗?你必须发布代码…不过,可能应该是一个单独的问题。将我链接到它,我可以看一看