System.Convert.ToSingle()问题,(1.5)vs(1,5)

时间:2010-09-18 20:59:39

标签: c# string localization floating-point

我正在用C#编写程序,用于在模型格式之间进行转换。 模型格式的数字为文本,例如“-0.136222”。

我可以使用System.Convert.ToSingle()将其转换为浮点数。但是在德国,我们使用逗号作为小数点(-0,136222),System.Convert就此选择了。现在我遇到的问题是它没有识别小数点,因为它需要逗号。

简而言之; 我们有这个:“ - 0.136222” 我们得到这个:-0136222.0f 因为它期望这个:“ - 0,136222”

我可以告诉系统只为我的程序识别逗号为小数点吗?解决方案不起作用,因为它需要可移植(到其他国家)。

2 个答案:

答案 0 :(得分:2)

使用Single.Parse()代替,如下所示:

Single.Parse("-0.136222", CultureInfo.InvariantCulture);

InvariantCulture是告诉方法解析字符串忽略特定于语言环境的小数和分组分隔符的方法。

答案 1 :(得分:0)

保持原样。客户端计算机上安装的.Net框架将自动选择正确的方法来解析计算机所在国家/地区设置的数据为...设置。例如,在欧洲大陆,它将使用逗号解析您的float,但在美国,英国和其他我们使用小数点的地方,它将使用小数点解析数据。

当然,您可以使用Culture(如Pawel建议的)或任何其他CultureInfo.InvariantCulture来覆盖.Net的CultureInfo特定本地化功能,但这意味着您必须专门为您销售软件的每个国家/地区设置它。最好让框架为您完成工作:)


注意:这也意味着在美国工作的德国人,如果他的PC设置为德国本地化,他的float将用逗号解析,如他希望,因为他位于美国而不是小数点。