Why are my decimal values ​​rounded to integers in SQL inserts?

I am using SQL Server Management Studio and have the following schema:

CREATE TABLE tmp(
    id int NOT NULL IDENTITY(1,1)PRIMARY KEY,
    toleranceRegion DECIMAL
)

Then I do the following inserts:

INSERT INTO tmp VALUES(3.2); 
INSERT INTO tmp VALUES(5.678);
INSERT INTO tmp VALUES(1.95);

Expected Result:

id  toleranceRegion
--  ---------------
1   3.2
2   5.678
3   1.95

Actual output:

id  toleranceRegion
--  ---------------
1   3
2   6
3   2

Why are the inserted values ​​of the allowed rounding values ​​rounded to the nearest integer?

+4
source share
4 answers

/ . 3 , DECIMAL (9,3), 6 3 . , , .

CREATE TABLE tmp(
    id int NOT NULL IDENTITY(1,1)PRIMARY KEY,
    toleranceRegion DECIMAL(9,3)
)

Sql .

+5

(18,4)

+2

, , , :

s () , . p . , . 0 p. , . - 0. ( )

, SQL Server .

+2

: DECIMAL?

DECIMAL (10, 2), 11 , 2 ( 2 , , 10.215 11.22, 11.214 - 11.21).

DECIMAL (10), .

toleranceRegion DECIMAL, .

CREATE TABLE tmp(
id int NOT NULL IDENTITY(1,1)PRIMARY KEY,
toleranceRegion DECIMAL(10,3)

)

, ,

INSERT INTO tmp VALUES(3.2); 
INSERT INTO tmp VALUES(5.678);
INSERT INTO tmp VALUES(1.95);

:

id  toleranceRegion
--  ---------------
1   3.2
2   5.678
3   1.95

. FLOAT DOUBLE PRECISION, , .

...

0

All Articles