Skip to content

Uso de money y decimal en sqlserver

May 17, 2011

Al ejecutar esto:

declare @varMoney money
declare @varDecimal decimal(9,2)

set @varMoney = 125.83
set @varDecimal = 125.83

select (@varMoney/1000)*1000 as ResultadoMoney
select (@varDecimal/1000)*1000 as ResultadoDecimal

Obtengo los siguientes resultados

ResultadoMoney: 125.80
ResultadoDecimal: 125.83

La pregunta es: ¿Dónde quedaron las 3 decimas?

Al dividir @varMeoney/1000 el tipo de dato money redondea el resultado en cuatro decimales lo que da como resultado la eliminación de esas 3 digitos.
Esto puede ser grave al momento de generar cualquier calculo si no se tiene en consideración este funcionamiento.

La solucion es:

utilizar siempre decimales para realizar las operaciones por ejemplo:

@varMeoney/1000.0

De esta forma el ejemplo que estoy usando funcionaría correctamente si lo escribimos así:

declare @varMoney money
declare @varDecimal decimal(9,2)

set @varMoney = 125.83
set @varDecimal = 125.83

select (@varMoney/1000.0)*1000 as ResultadoMoney
select (@varDecimal/1000.0)*1000 as ResultadoDecimal

ResultadoMoney: 125.83
ResultadoDecimal: 125.83

Alguna duda????

Follow

Get every new post delivered to your Inbox.