C# 将带符号的货币转换为十进制
我有一个文本框,显示货币值,如C# 将带符号的货币转换为十进制,c#,.net,winforms,cultureinfo,C#,.net,Winforms,Cultureinfo,我有一个文本框,显示货币值,如250.00欧元、1000.00美元、100.00英镑等 我创建了基于货币符号的文化 var culture = new CultureInfo(symbol); //symbol may be en-US,en-GB etc.. culture.NumberFormat.CurrencyDecimalSeparator = "."; 目前正在做下面的事情 decimal amount; decimal.TryParse(txtAmount.Tex
250.00欧元、1000.00美元、100.00英镑等
我创建了基于货币符号的文化
var culture = new CultureInfo(symbol); //symbol may be en-US,en-GB etc..
culture.NumberFormat.CurrencyDecimalSeparator = ".";
目前正在做下面的事情
decimal amount;
decimal.TryParse(txtAmount.Text, NumberStyles.Any, _culture, out rate);
这很好用
当金额>1000时,我对瑞典克朗有异议,因为它格式化了货币
i、 e
当输入100时,它变为100.00 kr,工作正常
当输入1000它1.000.00 kr时,它失败,金额变为0
想绕过这个问题吗?您可以这样设置文化:-
CultureInfo sw= new CultureInfo("sv-SE");
sw = (CultureInfo)sw.Clone();
sw.NumberFormat.CurrencyPositivePattern = 3;
sw.NumberFormat.CurrencyNegativePattern = 3;
然后
var rate = 123.45M;
txtAmount.Text = rate.ToString("C", sw);
输出
123,45 kr
这一切都是为了创造文化
正如DanielGimenez指出的那样,我删除了NumberFormat.currencydecimalsepender=“.”
并且一切正常您的代码的哪一部分变成1000到1000.00 kr?这是需要更正的部分,因为它应该是1.000,00 kr。在转换之前,您可以删除“.”的所有出现,但最后一个除外。又快又脏;-)如何创建文化?@DanielGimenez:dotxtmount.Text=rate.ToString(“c2”,文化)代码>目前的问题是,当您执行rate.ToString(“c2”,_culture)时,服务器上的cultureInfo是错误的代码>。您根本不必设置CurrencyDecimalSeparator
。我将更新您的服务器。请使用问题的编辑链接添加其他信息。“发布答案”按钮只能用于问题的完整答案。@PaulRoub:对不起,您所说的完整答案是什么意思?这是SO审阅工具中的样板文本。事后看来,我扣动扳机太快了。保留评论只是为了让你的评论仍然有意义。