C# - 错误的字符串到单一的转换[重复]
Posted
技术标签:
【中文标题】C# - 错误的字符串到单一的转换[重复]【英文标题】:C# - wrong string to single conversion [duplicate] 【发布时间】:2017-02-03 09:57:39 【问题描述】:我正在编写一个程序来将数据从微控制器传输到 PC。数据为浮点格式。我尝试使用Convert.ToSingle(string)
将字符串转换为float,但转换结果错误:
-
“0.11”转换为 11,有时是 12。
“0.10”转换为10.等
如您所见,它正在失去前导 0. ,这是出乎意料的。怎么会这样?
【问题讨论】:
尝试检查您的区域设置。我假设转换不起作用的系统设置了不同的小数分隔符(可能是逗号)。 检查重复的问题。 【参考方案1】:您的问题是特定于文化的。在某些文化中,浮点数由 ,
分隔,在某些文化中,它们由 .
分隔
你的情况
String a = "0,11";
Convert.ToSingle(a)
应该会导致您想要的结果为 0,11。
因此,您应该明确指定使用.
作为小数分隔符的相关文化。一种可能性是基于英语的不变文化。
尝试以下方法:
String a = "0.11";
Convert.ToSingle(a, CultureInfo.InvariantCulture)
【讨论】:
你:让它保持不变,这样两种可能性都可以接受 不,InvariantCulture
仅使用 "."
表示 NumberDecimalSeparator
,而仅使用 ","
表示NumberGroupSeparator
。它不允许“两种可能性”。例如,Convert.ToSingle("23.456,78", CultureInfo.InvariantCulture)
不成功。 Convert.ToSingle("23456,78", CultureInfo.InvariantCulture)
产生的价值接近 230 万,而不是 23000。
@JeppeStigNielsen 感谢您对我的答案的详细更正,您愿意编辑它并从您的评论中添加更正细节吗?以上是关于C# - 错误的字符串到单一的转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章