2015-11-23 81 views
1

我有一個MySQL InnoDB表中,列中的一個被定義爲雙和已存儲的號碼16155.987841701322但如果我從VB.NET執行查詢返回 16155.9878417013丟失小數

從MySQL工作臺我可以看到數據庫中的所有數字,但從VB:NET我少了兩位數。

爲什麼沒有返回所有的數字?

我做一些代碼來執行轉換測試

Dim OdometerDbl As Double = 16155.987841701322 
Dim OdometerStr As String 

OdometerStr = CStr(OdometerDbl) 

這個我OdometerStr得到OdometerDbl 16155.987841701322和16155.9878417013後;所以是一個VB.NET雙字符串轉換問題。

Theres任何方式來解決這個或更好的方式來轉換一個雙精度到字符串不丟失小數?

+3

https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html如何定義列?雙(17,12)或更高?我的猜測是15,10這就是爲什麼最後2位數字下降。但是要注意Double和浮點數是一樣的,「因爲浮點數值是近似值而不是作爲精確值存儲的,所以試圖把它們當作精確比較可能會導致問題」也許你想要[FIXED Point Types](http ://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html)而不是[浮點類型](http://dev.mysql.com/doc/refman/5.7/en /floating-point-types.html)。 – xQbert

+0

@xQbert事情是這個值已經存儲在數據庫中。當我在VB.NET中收到值時,我得到的數字少於存儲在數據庫中的數字。 –

+2

所以從你的.net查詢返回的結果集只返回十位數而不是12位?這對我來說似乎很奇怪。你確定這不是一個顯示問題,你將顯示限制在小數點後10位數?如果將結果集中的值乘以1000,會發生什麼情況,您是否看到缺少的2個值?如果是這樣,那麼你在呈現值時會遇到問題,而不是返回值。 – xQbert

回答