Pourquoi mes décimale étant arrondis à des entiers dans SQL insertions?

Je suis à l'aide de SQL Server Management Studio et avons le schéma suivant:

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

Puis-je effectuer la suite des insertions:

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

Résultat attendu:

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

De sortie réelle:

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

Pourquoi sont insérés toleranceRegion les valeurs sont arrondies à l'entier le plus proche?

pourquoi ne vous mettez-vous la précision et l'échelle?
Vous n'avez pas de définir une échelle/la précision décimale. Si vous voulez de 3 chiffres après la virgule, vous devez définir comme DECIMAL(9,3) ce qui vous permettrait d'6 places avant le signe décimal et un nombre décimal de jusqu'à 3 endroits.
[Met la main jusqu'] OK, j'avoue à la chute de celui-ci. Si la réponse ne le sens complet, je ne la trouve un peu un piège pour l'échelle par défaut (0) pour ne pas créer (mon idée) d'un décimal en premier lieu. Qu'est-ce paramètre par défaut, vous garantissant ainsi de tomber dans la fosse de la réussite plutôt que de la fosse de l'échec?

OriginalL'auteur Adam Freymiller | 2016-06-27