在C#中取消格式化货币

4
我从.aspx页面的标签中获取了一个字符串值,如下所示。
string text = Price.Text; // Price.Text = "$31.07"
Single value = Convert.ToSingle(text); //throws FormatException

我可以用空文本替换$符号,然后将其转换为单个字符,但我想知道是否有更好的方法来去除带有'$'符号的格式化文本并转换为单个字符。


重复:https://dev59.com/XErSa4cB1Zd3GeqPSwSy - Jon Seigel
1
单精度浮点数不适合用于货币,应该使用 Decimal 类型。 - Powerlord
5个回答

10

您可以尝试以下方法:

string text = Price.Text; // Price.Text = "$31.07"
Single value = Single.Parse(text, NumberStyles.Currency);

如果美元是计算机的本地货币(或者您设置了运行线程的数字格式),这将起作用。 - Mikael Svenson

0

如果美元是您计算机的本地货币,您可以使用:

Single value = Single.Parse("$31.07", NumberStyles.Currency);

如果不是的话,我会选择剥离。


0

使用备选文化:

decimal.Parse("£12,345.67", NumberStyles.Any, new CultureInfo("en-GB"));
decimal.Parse("€12.345,67", NumberStyles.Any, new CultureInfo("nl-NL"));

0
我建议您按照您的建议移除"$",然后使用Single.Parse()将字符串转换为数字。

0

只需做

string text = Price.Text;
text=text.Replace("$","");
Single value = Convert.ToSingle(text);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接