2014-05-17 39 views
0

我有數據存儲爲字符串格式,它使用逗號來分隔小數和整數。變量「數據點」實際上是已被用於檢索來自一個SQLite數據DataTable對象的元素.db文件:從「字符串」轉換爲「單一」類型不起作用

dataPoint = MyDataTable.Rows(0)(0) ="0,1563" 

當我嘗試使用下面的代碼行進行轉換:

convertedDataPoint = Convert.ToSingle(Strings.Replace(dataPoint, ",", ".")) 

...我得到以下值:

>>> 1563.0 

而不是

>>> 0.1563 

這裏有什麼問題?我應該如何正確地轉換這些數據?

+0

你可以顯示你宣佈'convertedDataPoint' – Plutonix

+1

你的文化設置是什麼?是','小數點還是千位分隔符? –

+0

它實際上是一個從SQLite數據庫中以String形式檢索的元素。我在頂部添加了一部分 –

回答

3

Convert.ToSingle()使用當前線程的文化信息來解析數字。如果你想要一個不變的方法,你可以指定字符串中的格式:

convertedDataPoint = Convert.ToSingle(dataPoint, CultureInfo.InvariantCulture) 

或意大利的一個:

convertedDataPoint = Convert.ToSingle(dataPoint, new CultureInfo("it")) 

但不要實例每次新CultureInfo。創建一次並在需要的地方使用它。

無論如何,你的數據庫應該以一致的方式存儲數字。最好作爲一個數字,而不是一個字符串。如果必須是字符串,則使用不依賴於計算機語言設置的一致格式。

相關問題