Tengo algunos problemas para convertir algunos datos almacenados en un tipo de datos FLOAT en datos almacenados en un tipo de datos INT. El siguiente ejemplo ilustra mi problema:Conversión de SQL FLOAT a SQL INT, pérdida de datos
DECLARE @data TABLE
(
id INT,
weight FLOAT
)
INSERT INTO @data VALUES(1,0.015662)
SELECT CAST(weight * 1000000 AS INT) FROM @data
SELECT 0.015662 * 1000000
SELECT CAST(0.015662 * 1000000 AS INT)
Los resultados deseados serían: ID = 1 VALUE = 15662
Sin embargo, cuando viene de la tabla @data
, que no parecen conseguir esto. En su lugar, obtengo ID = 1 VALUE = 15661.
¿Alguien tiene alguna idea de por qué es esto? Supongo que es una especie de matiz flotante. Pero nunca pensé que tendría un problema con algo como lo de arriba. ¿Algunas ideas? Gracias de antemano por tu ayuda.
ROUND (peso * 1000000.0, 0) sería mejor porque no sabemos qué sistema utiliza el autor. – Lex