Mysql的float型別造成的困擾總結

2022-02-24 06:36:31 字數 581 閱讀 2417

因為換了工作正在學習使用mysql,今天領導提出了乙個問題,如下:

x列是累加值,a列是每日新增值,那麼x2應該是x1+a2,而且儲存過程裡也是這樣計算的。可是奇怪的是x2的值卻總是和正確值(2396116766)有一定的差異。於是我手工進行了update,但是沒有辦法,資料永遠是:2396116736。在我百思不得其解的時候我決定看看這個表怎麼建立的,我發現這個欄位是float(20,4),參閱《mysql技術內幕:sql程式設計

》和《高效能mysql》發現,float欄位是不精確的。於是把這個字段改成了decimal,這樣就正確了。

我參閱了很多網上的資料,很多資料都有過實驗,有些人說超過10位就會出現這個問題,我測試了一下,123456789這種資料,都會有問題。

mysql支援的字段型別自然非常豐富,給人提供了很多選擇,但是對比oracle的number欄位(雖然看著很傻瓜,什麼數字都是number型),給我這種剛開始接觸mysql的人造成了很多困擾,不過有了困擾解決了就是經驗,寫下來也能幫助到和我一樣有問題的人,可謂功德無量。

mysql中float型別使用總結

對於單精度浮點數float 當資料範圍在 131072 65536 2 以內的時候,float資料精度是正確的,但是超出這個範圍的資料就不穩定,沒有發現有相關的引數設定建議 將float改成double或者decimal,兩者的差別是double是浮點計算,decimal是定點計算,會得到更精確的資...

FLOAT型別的值域

小數在c 中需要用浮點型表示,浮點值就是.後面的小數點。c 語言中有兩種小數型別,分別為32位單精度浮點型 float 和64位雙精度浮點型 double 其中精度指的是小數字數,小數字數越多,精度越高。由名稱可知,float型別的精度比double型的低,由位數可知,float型別的範圍比doub...

float 型別的儲存

首先,看一段 int main if d f 這個程式的輸出結果是 hello world 然後你有沒有產生了好奇?這是為啥,下面我就來具體講一講float在記憶體中的儲存方式 目前所有的計算機都支援乙個被稱為ieee浮點的標準.題外話 電器氣和電子工程師協會 ieee 是乙個包括所有電子和計算機技...