Voici le code que j'utilise dans l'exemple :
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2;
PRINT @weight
Voici le résultat :
47
638
0
J'aimerais savoir pourquoi il revient. 0
au lieu de 0,073667712
Voici le code que j'utilise dans l'exemple :
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2;
PRINT @weight
Voici le résultat :
47
638
0
J'aimerais savoir pourquoi il revient. 0
au lieu de 0,073667712
Lorsque vous utilisez uniquement des nombres entiers dans une division, vous obtenez une division entière. Lorsque vous utilisez (au moins un) double ou un flottant, vous obtiendrez une division en virgule flottante (et la réponse que vous souhaitez obtenir).
Donc vous pouvez
Ne vous contentez pas de convertir le résultat de la division entière en double : la division a déjà été effectuée en tant que division entière, donc les chiffres derrière la décimale sont déjà perdus.
Merci. Votre code m'a aidé à répondre à cette question - stackoverflow.com/questions/20532187/ Pouvez-vous me dire comment tronquer les zéros supplémentaires causés par cette multiplication ? Merci.
Si vous le déclarez en tant que float ou tout autre format décimal, il affichera
0
sólo
Par exemple :
declare @weight float;
SET @weight= 47 / 638; PRINT @weight
Sortie : 0
Si vous voulez que la sortie soit
0.073667712
Par exemple
declare @weight float;
SET @weight= 47.000000000 / 638.000000000; PRINT @weight
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
C'est un 'int' : DECLARE @weight INT