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
[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?
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
Vous devez vous connecter pour publier un commentaire.
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 DÉCIMAL(9,3) qui vous donnera 6 places avant le signe décimal et un nombre décimal de jusqu'à 3 endroits. Vous avez besoin d'analyser les données attendues et basé sur ce que vous attendez de spécifier la précision et l'échelle de votre définition de la colonne.
Voir la documentation de Sql Server pour virgule ici.
OriginalL'auteur Igor
C'est parce que vous n'avez pas réglé échelle, ce qui signifie que le système est à l'aide de l'échelle par défaut de zéro:
En d'autres termes, SQL Server stocke zéro chiffres à droite du point décimal.
OriginalL'auteur dasblinkenlight
Définir votre précision
Décimal(18,4)
Ce serait décimales
OriginalL'auteur John Cappelletti
Ici question est de savoir Comment vous définissez la précision de la colonne DECIMAL?
Si il est DÉCIMAL(10, 2) il y aura un total de 11 numéros dont 2 sont des valeurs décimales (avec 2 décimales arrondissement sens que 10.215 est enregistré en tant que 11.22 et 11.214 devient 11.21).
Si il est DÉCIMAL(10) il n'aura pas de valeurs décimales et arrondi à un nombre entier.
Dans votre question, vous avez défini
toleranceRegion DECIMAL
de sorte qu'il est arrondi à l'entier suivant Si vous déclarez le tableau comme)
Il ne sera pas le arrondis et vous obtiendrez le résultat que vous souhaitez
de sortie:
Remarque:- Si vous utilisez FLOAT ou DOUBLE PRÉCISION, vous n'avez pas à spécifier le nombre de décimales des valeurs, mais il a ses propres défauts.
Pour plus de détails, vous pouvez cliquez ici
OriginalL'auteur MANISH KUMAR CHOUDHARY