c#尽管是数字格式,但如何正确读取double的字符串?
嗨,伙计们,我的问题是这个。我用c#制作了一个可以读取和编辑dxf文件的软件,我不得不把这个软件交给一家美国公司,但我发现了以下问题: 在我居住的地方,我们用“,”来分隔数字的整数部分和小数部分(例如:23658),但在美国,他们用“,”所以他们写2.3658。 当我尝试读取字符串“2.3658”并将其转换为带有“double.Parse”(“2.3658”)的double时,我得到的double是23658,就像方法“Parse()”无法识别小数部分一样。 我找到了以下解决方案: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
UpdatedCoorx = double.Parse(shiftedE[w + 1] ,NumberStyles.Number,CultureInfo.CreateSpecificCulture ("en-US"));
使用CultureInfo.CreateSpecificCulture(“en-US”),c#可以正确读取数字。
我的问题是:有没有一种方法可以让c#自动识别所安装pc的“区域性”,以便它能够正确读取数字???如果您想检测
区域性,您应该可以使用
如CultureInfo.CurrentCulture
中所述,从WindowsGetUserDefaultLocaleName
函数返回区域性。如果要检测区域性,应该可以使用
如CultureInfo.CurrentCulture
中所述,从WindowsGetUserDefaultLocaleName
函数返回区域性。如果要检测区域性,应该可以使用
如CultureInfo.CurrentCulture
中所述,从WindowsGetUserDefaultLocaleName
函数返回区域性。如果要检测区域性,应该可以使用
如CultureInfo.CurrentCulture
中所述,从WindowsGetUserDefaultLocaleName
函数返回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?两种解释都是有效的,