如何将一个字符串转换为浮点数,而不考虑货币格式?

5

我将一个浮点数转换为货币格式的字符串。

float f = 2.99F;
string s = f.ToString("c2");
//s = 2.99

但是当我想把它转换回浮点数时,这是不可能的,因为浮点数不能存储 € 符号。那么有没有一种方法可以将字符串转换回浮点数,但忽略掉“€”(带空格)?


1
你正在做的是极其危险的;财务计算通常只保留固定位数的小数,而这不是 float 计算的方式;你可能应该使用 decimal 来表示货币金额。此外,ToString("c2") 使用机器本地化;用户可以更改本地化设置,因此你的 "€2.99" 可能会变成 "£2.99" 或 "$2.99"。这符合你的意愿吗? - Dour High Arch
1个回答

8
这应该可以工作:
float f = 2.99F;
string s = f.ToString("c2");
var number = float.Parse(s, NumberStyles.AllowCurrencySymbol 
                           | NumberStyles.Currency);

1
这似乎不起作用:float f = 2.99F; float.Parse(f.ToString("c2"), NumberStyles.AllowCurrencySymbol); - Magnus
@Magnus 看起来指定 NumberStyles.Currency 是必要的,现在它可以工作了。 - Selman Genç
如果你在处理钱的时候,你确定想用float而不是decimal吗?(这个回答很好,但是对于未来的读者...请考虑一下这个建议) - Joe

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