One
When the precision of a number is set to numbers (3,2), then the number of digits he can enter can only be 3-2 = 1 bits, and if the decimal place is not enough, it will be filled with 0, and the rounding that is exceeded retains 3 decimal places.
sql> INSERT INTO T_te (NUM1) values (45.67882);
Insert into T_te (NUM1) VALUES (45.67882)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (NUM1) VALUES (12.3);
Insert into T_te (NUM1) VALUES (12.3)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (NUM1) values (1.3);
1 row inserted
Sql> select Num1 from T_te;
NUM1
-----
1.30
Two
When the precision of a number is set to numbers (3,0), the number of integers that can be entered is only less than 5 bits, and the fractional parts are rounded, leaving only integers. In this case, the system defaults to number (3) when defining the data type of the column.
sql> INSERT INTO T_te (num2) values (123.45);
1 row inserted
Sql> select num2 from T_te;
NUM2
----
123
sql> INSERT INTO T_te (num2) values (1234.45);
Insert into T_te (num2) VALUES (1234.45)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (num2) values (1.45);
1 row inserted
Sql> select num2 from T_te;
NUM2
----
123
1
sql> INSERT INTO T_te (num2) values (1.89);
1 row inserted
Sql> select num2 from T_te;
NUM2
----
123
1
2
Three
When the precision of a number (2,3) is determined, then the number can be entered can only be decimal, and only after the decimal point (3-2=1) decimal place, the integer digits cannot have numbers.
sql> INSERT INTO T_te (NUM3) values (1.89);
Insert into T_te (NUM3) VALUES (1.89)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (NUM3) values (0.89);
Insert into T_te (NUM3) VALUES (0.89)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (num3) values (0.089);
1 row inserted
Sql> select num3 from T_te;
NUM3
----
0.08
Four
When the precision of a number is set to numbers (3,-2), the number entered can be any one integer part less than 5 ((-2)) bit, fractional part random number, but the system will be rounded to keep the hundred display.
sql> INSERT INTO T_te (NUM4) values (12.3456);
1 row inserted
sql> INSERT INTO T_te (NUM4) values (122.3456);
1 row inserted
sql> INSERT INTO T_te (NUM4) values (1222.3456);
1 row inserted
sql> INSERT INTO T_te (NUM4) values (122234253524.3456);
Insert into T_te (NUM4) VALUES (122234253524.3456)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (NUM4) values (12223.3456);
1 row inserted
sql> INSERT INTO T_te (NUM4) values (122236.3456);
Insert into T_te (NUM4) VALUES (122236.3456)
ORA-01438: Value greater than the allowable precision specified for this column
Sql> select Num4 from T_te;
NUM4
-----
0
100
1200
12200
Five
When the precision of a number is set to 2,-3, the number can be entered as long as the integer part does not exceed 5 (--(-3)) bit, no error is made, and the decimal digit is rounded directly. The system displays only the whole number of parts
sql> INSERT INTO T_te (NUM5) values (12345);
1 row inserted
sql> INSERT INTO T_te (NUM5) values (12345723);
Insert into T_te (NUM5) VALUES (12345723)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (NUM5) values (123456);
Insert into T_te (NUM5) VALUES (123456)
ORA-01438: Value greater than the allowable precision specified for this column
sql> INSERT INTO T_te (NUM5) values (12345.345678);
1 row inserted
Sql> select NUM5 from T_te;
NUM5
----
12000
12000
About number ... The accuracy problem