2011-04-16 542 views

回答

50

精度是有效數字的個數。 Oracle保證數字的可移植性,精度範圍爲1到38.

比例是指向小數點 點右邊(正數)或左邊(負數)的位數。比例範圍從-84到127.

在你的情況下,具有精度6的ID意味着它不會接受一個有7位或更多有效位數的數字。

參考:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

該頁面也有一些例子,這將讓你明白的精度和規模。

+1

那意味着最後的bumber將是1000000? – user700792 2011-04-16 21:17:53

+6

+1:我認爲理解這一點的關鍵是瞭解內部數字格式 - 尾數和指數。精度對尾數的可能長度設置限制,並且標度對可能的指數最小值進行限制。 – 2013-06-11 12:03:45

+0

@DavidAldridge我回應你。我認爲你應該考慮發佈它作爲關於尾數和指數的答案。數字實際上是以可變長度格式存儲的。 – 2015-05-28 05:10:14

130

精密4,刻度2:99.99

精密10,刻度0:9999999999

精密8,規模3:99999.999

精密5,規模-3:99999000

+5

你能解釋負面尺度的行爲嗎? – Geek 2014-06-19 13:08:17

+1

看起來像rounds /忽略許多左邊爲十進制的整數值 – JDPeckham 2014-06-20 03:54:39

+2

請記住,precision始終包含scale部分。例如:精度4,比例2 - 將失敗> 99.9999 ..;嘗試:從dual中選擇cast(99.99999作爲NUMBER(4,2)); //好;選擇cast(100.9爲NUMBER(4,2)); //失敗; – 2015-03-06 17:47:35

-5

如果值爲9999.988和精度4,標度2則表示9999(表示精度).99(標度爲2,因此.988被舍入爲0.99)

如果值爲9 999.9887,精度爲4,刻度爲2則表示9999.99

+6

不,精度是要存儲的有效位數。在這兩種情況下,存儲的精度都是6,比例是2. – 2013-06-11 12:01:37

39

精度是總位數。 比例尺是小數點後的位數。

實施例:
NUMBER(7,5):12.12345
NUMBER(5,0):12345

+10

精度是總數位數,而不是小數點左邊的數字。 – 2013-06-11 11:51:55

+0

和比例尺是小數點右邊(正數)或左邊(負數)的位數,不只是小數點後面的位數。 – 2015-05-28 05:11:21

20

也許更加清晰:

注意精度的總位數,規模包括

NUMBER(精度,小數)

精密5,比例3:54.321

精密5,比例1:5432.1

精密5,刻度0:54321

精密5,比例-1:54320

精密5,尺度-3:54000

+0

這是一個非常好的解釋。如果可以將精度總數位數置於頂部,那將更容易 – Yogamurthy 2016-07-16 01:39:00

+1

更改完成。謝謝。 – 2016-08-08 14:31:39

相關問題