我将数据存储为字符串格式,使用逗号将十进制与整数分开。变量" dataPoint"实际上是一个DataTable对象的元素,用于从SQLite .db文件中检索数据:
dataPoint = MyDataTable.Rows(0)(0) ="0,1563"
当我尝试使用以下代码行进行转换时:
convertedDataPoint = Convert.ToSingle(Strings.Replace(dataPoint, ",", "."))
...我得到以下值:
>>> 1563.0
而不是
>>> 0.1563
这里有什么问题?我该如何正确转换这些数据?
答案 0 :(得分:3)
Convert.ToSingle()
使用当前线程的区域性信息来解析该号码。如果您想要一种不变的方法,您可以指定字符串所在的格式:
convertedDataPoint = Convert.ToSingle(dataPoint, CultureInfo.InvariantCulture)
或意大利人:
convertedDataPoint = Convert.ToSingle(dataPoint, new CultureInfo("it"))
但每次都不要实例化新的CultureInfo
。创建一次并在任何需要的地方使用它。
无论如何,您的数据库应该以一致的方式存储数字。优选地作为数字,而不是作为字符串。如果必须是字符串,则使用不依赖于计算机语言设置的一致格式。