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

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

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

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

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

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

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

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

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

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


注意:这也意味着一个(比方说)在美国工作的德国人,他的PC设置为德国本地化,他的float用逗号解析,正如他所期望的那样,不是因为他位于美国。