¿Por qué la división devuelve cero?
Aquí está el código que estoy usando en el ejemplo:
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2;
PRINT @weight
Aquí está el resultado:
47
638
0
Me gustaría saber por qué regresa 0
en lugar de0,073667712
Declare set1 y set2 como flotantes en lugar de números enteros o conviértalos en flotantes como parte del cálculo:
SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);
Cuando usas solo números enteros en una división, obtendrás una división entera. Cuando usas (al menos uno) double o float, obtendrás una división en punto flotante (y la respuesta que deseas obtener).
Así que puedes
- declarar una o ambas variables como flotante/doble
- convierta una o ambas variables a flotante/doble.
No se limite a convertir el resultado de la división entera en doble: la división ya se realizó como división entera, por lo que los números detrás del decimal ya se pierden.
Simplemente multiplica la parte inferior de la división por 1,0 (o tantos decimales como quieras)
PRINT @set1
PRINT @set2
SET @weight= @set1 / @set2 *1.00000;
PRINT @weight
Porque es un número entero. Debe declararlos como números de punto flotante o decimales, o convertirlos en tales en el cálculo.