2011-04-26 58 views

回答

5

這個問題可能不是沒有指定的實現非常有意義的。

在SQL Server中,例如,float's minimum precision is 1

其中n是被 用於將 浮點數的尾數儲存在科學記數法 ,因此比特的數目,決定了精度 和存儲大小。如果指定n, 它必須是1和53之間的值。 n的缺省值是53.

在MySQL中,另一方面,float(0)是有效的語法,但它聽起來不太有意義。 From the specification

MySQL也支持這個可選 精度規格,但 精度值僅用於 確定存儲大小。 從0到23的結果在一個四字節 單精度浮點柱精密 。從24至53的結果在 八字節的雙精度甲 高精度雙 柱。

甲骨文has a FLOAT datatype,但它似乎只是用於NUMBER的別名,其最小精度爲1:

在具有精度p NUMBER數據類型 的A亞型。 FLOAT值爲 ,內部表示爲NUMBER。 精度p可以爲1至126的二進制數字。 FLOAT值 需要1到22個字節。

所以你可以看到答案是高度實現特定的。我不確定ANSI SQL標準是否指定FLOAT精度。他們可能不會。

+0

真棒解釋。我檢查了服務器端將使用什麼SQL實現,它是MySQL。客戶端將實現SQLite,我想在這種情況下,數據類型將轉換爲REAL並自動獲取8個字節的存儲大小。 – 2011-04-26 18:54:34

+0

如果該值需要1到22個字節,則範圍必須爲1到* 176 *二進制數字。 – 2011-04-26 19:30:21

+0

這是一個很好的觀察結果......不過,您必須將其與我從中複製報價的網站維護人員合起來。 :) – 2011-04-26 19:50:43

1

它是無效的,因爲你需要聲明數據類型的大小。顯然不能爲零。

1

Oracle和MS SQL狀態,對於float精度最小值是1

這是有道理的:這是你想要你的浮點數支持小數位的數量。小數點後的零位意味着沒有任何值。

相關問題