mysql Blob 保存浮點問題

最近要做一個將通信的原始數據保存起來的功能。 數據庫使用Blob類型對應java.lang.Blob;

但是發現對於浮點型的小數如果爲0的話保存後的數據會出現錯誤。

測試數據

 

1.00001f(float ),1.00001f(float ),1.00001f(float ),1.00001f(float )

保存前的:

16:3F80 0054 3F80 0054 3FF0 000A 7C5A C472 3FF0 000A 7C5A C472

保存後的:

16: 3F80 0054 3F80 0054 3FF0 5C30 0A7C 5AC4 723F F05C 300A 7C5A C472

比原來的數據多了2位,經過分析後發現好像是將0保存成 /'0'(注意是2個字符 '/'  跟'0') 去了。 所以多了2位。

如果小數第1位不爲0就不會出錯。

 

花了一段時間查找原因跟解決辦法,網上好象也沒人碰到過這種問題。

最後看幫助的時候突然看到有個setBytes,就是用byte[]保存,試試,結果成功。也沒出現上面的問題。

 

更改方面:數據庫還是使用Blob;

但是對象的類型改成byte[],使用hibernate的話,映射文件的類型改爲type="byte[]" 就可以了。

 

現在記錄一下,對碰到此問題的朋友一點幫助,如果有人知道此問題引起的原因希望也能分享出來。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章