C# 忽略特定于国家/地区的小数分隔符

C# 忽略特定于国家/地区的小数分隔符,c#,C#,我目前正在开发一个应用程序,它需要能够使用美国的数字布局(123456.78)以及德国的布局(123.456,78) 现在我的方法是使用NumberFormatInfo.InvariantInfo,如下所示: temp = temp.ToString(NumberFormatInfo.InvariantInfo); 例如,当从文本框中读取数字时,这非常有效。当系统设置为英语格式时,它将使用作为分隔符,当系统设置为德语时,它将使用, 到目前为止还不错……但问题是:我有一个设备,可以返回美国格

我目前正在开发一个应用程序,它需要能够使用美国的数字布局(
123456.78
)以及德国的布局(
123.456,78

现在我的方法是使用NumberFormatInfo.InvariantInfo,如下所示:

temp = temp.ToString(NumberFormatInfo.InvariantInfo);  
例如,当从文本框中读取数字时,这非常有效。当系统设置为英语格式时,它将使用
作为分隔符,当系统设置为德语时,它将使用

到目前为止还不错……但问题是:我有一个设备,可以返回美国格式的信息,而且不会改变(通过RS232传输)。所以我收到了类似于
10.543355E-00
的消息

现在启用德语设置时,
将被丢弃,因为它只是组分隔符 最后我会得到的数字是10543355……比这多得多:)

我尝试使用相同的技术,认为这会使整个事情变得“无文化”,能够独立于系统语言进行处理,但它不起作用:)

我希望你能在这里帮助我…我想使用一种不必实现整个文化的方法,因为我在这里需要的是真正能够正确计算的数字。

解析设备中的字符串时应该使用。这将导致它使用不变区域性,该区域性具有十进制分隔的美国规则


根据评论进行编辑:

问题不在于调用
.ToString()
,而在于从设备读取字符串并将其转换为数字:

string inputFromRS232Device = GetDeviceInput();
double value;

// You need this when converting to the double - not when calling ToString()
bool success = double.TryParse(
                          inputFromRS232Device, 
                          NumberStyles.Float, 
                          CultureInfo.InvariantCulture, 
                          out value);

使用与上述相同的方法(.ToString(CultureInfo.InvariantCulture))不会有任何区别。。。。谢谢你的快速回答