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
Dans SQL Server, la division directe de deux entiers renvoie un entier même si le résultat devrait être un flottant. Il y a un exemple ci-dessous pour le faire comprendre :
--1--
declare @weird_number_float float
set @weird_number_float=22/7
select @weird_number_float
--2--
declare @weird_number_decimal decimal(18,10)
set @weird_number_decimal=22/7
select @weird_number_decimal
--3--
declare @weird_number_numeric numeric
set @weird_number_numeric=22/7
select @weird_number_numeric
--Right way
declare @weird_number float
set @weird_number=cast(22 as float)/cast(7 as float)
select @weird_number
Le dernier bloc renverra 3,14285714285714. Malgré le deuxième bloc défini avec la bonne précision, le résultat sera 3.00000.
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