1. oracle的number類型是oracle的內置類型之一,是oracle的最基礎數值數據類型。在9iR2及其以前的版本中只支持一種適合存儲數值數據的固有數據類型,在10g以后,才出現了兩種新的數值類型,即推出本地浮點數據類型(Native Floating-Point Data Types): BINARY_FLOAT(單精度32位)和BINARY_DOUBLE(雙精度64位)。這些新數據類型都是基于IEEE二進制浮點運算標準,ANSI/IEEE Std 754-1985 [IEEE 754],使用這些類型時要加上文字f(BINARY_FLOAT)或者d(BINARY_DOUBLE),比如2.07f、3.000094d
?
2.number類型的語法很簡單:number(p,s)
p:精度位,precision,是總有效數據位數,取值范圍是38,默認是38,可以用字符*表示38;
s:小數位,scale,是小數點右邊的位數,取值范圍是-84~127,默認值取決于p,如果沒有指定p,那么s是最大范圍,如果只指定了p,那么s=0。
s>0,精確到小數點右邊s位,然后檢驗有效數位是否<=p;
s<0,精確到小數點左邊s位,然后檢驗有效數位是否<=p+|s|;
s==0或者未指定,四舍五入到最近整數?
當p<s時候,表示數字是絕對值小于1的數字,且從小數點右邊開始的前s-p位必須是0,保留s位小數。
?
例子:具體數據可參考下表
?
Value | Datatype | Stored Value |
123.2564 | NUMBER | 123.2564 |
1234.9876 | NUMBER(6,2) | 1234.99 |
12345.12345 | NUMBER(6,2) | Error |
1234.9876 | NUMBER(6) | 1235 |
12345.345 | NUMBER(5,-2) | 12300 |
1234567 | NUMBER(5,-2) | 1234600 |
12345678 | NUMBER(5,-2) | Error |
123456789 | NUMBER(5,-4) | 123460000 |
1234567890 | NUMBER(5,-4) | Error |
12345.58 | NUMBER(*, 1) | 12345.6 |
0.1 | NUMBER(4,5) | Error |
0.01234567 | NUMBER(4,5) | 0.01235 |
0.09999 | NUMBER(4,5) | 0.09999 |
0.099996 | NUMBER(4,5) | Error ? |