Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#尽管是数字格式,但如何正确读取double的字符串?_C#_Visual Studio_Double_Cultureinfo - Fatal编程技术网

c#尽管是数字格式,但如何正确读取double的字符串?

c#尽管是数字格式,但如何正确读取double的字符串?,c#,visual-studio,double,cultureinfo,C#,Visual Studio,Double,Cultureinfo,嗨,伙计们,我的问题是这个。我用c#制作了一个可以读取和编辑dxf文件的软件,我不得不把这个软件交给一家美国公司,但我发现了以下问题: 在我居住的地方,我们用“,”来分隔数字的整数部分和小数部分(例如:23658),但在美国,他们用“,”所以他们写2.3658。 当我尝试读取字符串“2.3658”并将其转换为带有“double.Parse”(“2.3658”)的double时,我得到的double是23658,就像方法“Parse()”无法识别小数部分一样。 我找到了以下解决方案: Updat

嗨,伙计们,我的问题是这个。我用c#制作了一个可以读取和编辑dxf文件的软件,我不得不把这个软件交给一家美国公司,但我发现了以下问题:

在我居住的地方,我们用“,”来分隔数字的整数部分和小数部分(例如:23658),但在美国,他们用“,”所以他们写2.3658。 当我尝试读取字符串“2.3658”并将其转换为带有“double.Parse”(“2.3658”)的double时,我得到的double是23658,就像方法“Parse()”无法识别小数部分一样。 我找到了以下解决方案:

 UpdatedCoorx = double.Parse(shiftedE[w + 1] ,NumberStyles.Number,CultureInfo.CreateSpecificCulture ("en-US"));
使用CultureInfo.CreateSpecificCulture(“en-US”),c#可以正确读取数字。
我的问题是:有没有一种方法可以让c#自动识别所安装pc的“区域性”,以便它能够正确读取数字???

如果您想检测
区域性,您应该可以使用

CultureInfo.CurrentCulture
中所述,从Windows
GetUserDefaultLocaleName
函数返回
区域性。

如果要检测
区域性,应该可以使用

CultureInfo.CurrentCulture
中所述,从Windows
GetUserDefaultLocaleName
函数返回
区域性。

如果要检测
区域性,应该可以使用

CultureInfo.CurrentCulture
中所述,从Windows
GetUserDefaultLocaleName
函数返回
区域性。

如果要检测
区域性,应该可以使用
如
CultureInfo.CurrentCulture
中所述,从Windows
GetUserDefaultLocaleName
函数返回
Culture

有没有一种方法可以让c#自动识别安装电脑的“区域性”,以便正确读取数字

这就是默认情况下它所做的,也是为什么会出现问题的原因,因为用于创建您正在解析的值的区域性(“2.3658”)不是本地计算机上的区域性

对于任何特定的价值,你都应该真正知道是哪种文化产生了它。对于机器对机器的通信,最好使用与美国最相似的固定区域性(
CultureInfo.invariant
)。理想情况下,您根本不应该以特定于区域性的格式存储值;将它们存储在二进制表示形式而不是字符串中,或者如果必须存储字符串,则将其视为有效的机器间通信

如果您不幸地接收到数据,而您知道数据是根据某种人类文化格式化的,但您不知道是哪一种,那么您可能应该使用一些启发式方法来检测文化是什么。但这很容易失败——例如,“1234”表示1后跟“分组”分隔符,后跟234——表示一千二百三十四。。。或者它意味着一个1后跟一个十进制分隔符,使值略大于1?这两种解释都是有效的,取决于您使用的文化

有没有一种方法可以让c#自动识别安装电脑的“区域性”,以便正确读取数字

这就是默认情况下它所做的,也是为什么会出现问题的原因,因为用于创建您正在解析的值的区域性(“2.3658”)不是本地计算机上的区域性

对于任何特定的价值,你都应该真正知道是哪种文化产生了它。对于机器对机器的通信,最好使用与美国最相似的固定区域性(
CultureInfo.invariant
)。理想情况下,您根本不应该以特定于区域性的格式存储值;将它们存储在二进制表示形式而不是字符串中,或者如果必须存储字符串,则将其视为有效的机器间通信

如果您不幸地接收到数据,而您知道数据是根据某种人类文化格式化的,但您不知道是哪一种,那么您可能应该使用一些启发式方法来检测文化是什么。但这很容易失败——例如,“1234”表示1后跟“分组”分隔符,后跟234——表示一千二百三十四。。。或者它意味着一个1后跟一个十进制分隔符,使值略大于1?这两种解释都是有效的,取决于您使用的文化

有没有一种方法可以让c#自动识别安装电脑的“区域性”,以便正确读取数字

这就是默认情况下它所做的,也是为什么会出现问题的原因,因为用于创建您正在解析的值的区域性(“2.3658”)不是本地计算机上的区域性

对于任何特定的价值,你都应该真正知道是哪种文化产生了它。对于机器对机器的通信,最好使用与美国最相似的固定区域性(
CultureInfo.invariant
)。理想情况下,您根本不应该以特定于区域性的格式存储值;将它们存储在二进制表示形式而不是字符串中,或者如果必须存储字符串,则将其视为有效的机器间通信

如果您不幸地接收到数据,而您知道数据是根据某种人类文化格式化的,但您不知道是哪一种,那么您可能应该使用一些启发式方法来检测文化是什么。但这很容易失败——例如,“1234”表示1后跟“分组”分隔符,后跟234——表示一千二百三十四。。。或者它意味着一个1后跟一个十进制分隔符,使值略大于1?两种解释都是有效的,