2016-04-27 41 views
1

我使用Convert.ToDouble(value)轉換一個OleDbDataReader類型爲Double但有時它增加了額外的小數(我與Access工作)。轉換翻番 - 可疑的準確性

例子:

比方說data(0)持有的價值69.8(用逗號)

那麼這是我的代碼:

Dim data As OleDbDataReader = DBBroker.getInstance.read("SELECT ......") 

Dim m as Double = Convert.ToDouble(data(0)) 

我的問題是,這是使m東西像69.80002302(或類似的東西),而不是像它真正包含的那樣只有69.8。

爲什麼?我該如何解決它?

+0

你給出的例子是[not reproducable](https://dotnetfiddle.net/5S2g55)。正如@JohnColeman寫的,當你真的遇到這個問題時,請給出一個真實的代碼示例。 –

+0

我編輯了它。 – Wrong

+1

您確定數據庫中的值正好是69.8嗎?某些數據庫工具可能會顯示格式化的字段,使其僅顯示698,但確實保留69.80002302。 –

回答

1

嗯,你真的能肯定的是,現場真的正好包含69.8或者,簡單地說,訪問被四捨五入了價值?

如果您確實想要了解閱讀器內部的內容,可以調試代碼並使用.IsDbNull(0)來檢查它的值是否爲空。如果不是,請在Visual Studio中的Locals選項卡中查看實際類型data(0)。如果它已經是雙倍的,那麼就不會發生轉換,並且我懷疑該字段已經存儲了一個四捨五入的值。

+0

是的,我調試,並在最後一行,而數據(0)是69.8它是我說的價值。這不是真的69.8(我不記得它是什麼數字,它是發生了什麼的一個例子) – Wrong

+0

如果它不是69.8,它可能是一個簡單的四捨五入問題。請提供確切的價值。 –