Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Redondeos en SQL Server

Estas en el tema de Redondeos en SQL Server en el foro de SQL Server en Foros del Web. Hola a todos. Tengo un problema desde hace mucho tiempo que no lo he podido solucionar. En una Tabla de SQL Server tengo un campo ...
  #1 (permalink)  
Antiguo 22/05/2007, 02:10
Avatar de Expinete  
Fecha de Ingreso: abril-2006
Ubicación: Zaragoza
Mensajes: 236
Antigüedad: 18 años, 1 mes
Puntos: 3
Redondeos en SQL Server

Hola a todos. Tengo un problema desde hace mucho tiempo que no lo he podido solucionar.
En una Tabla de SQL Server tengo un campo "Importe" Tipo float.
En un formulario de Visual Basic tengo un cuadro de texto con el valor 74,99

Al asignarle el valor al campo de la base de datos pongo lo siguiente:
rs.fields("Importe")=round(cdbl(txtimporte.text),2 )
También he probado a hacer lo siguiente:
Dim Importe as double
Importe=round(txtimporte.text),2)
rs.fields("Importe")=importe

Si miro el valor de rs.fields("Importe") lo tiene correcto: 74,99 pero sin embargo miro en la base de datos y ha grabado 74,989999999999995.

Esto me da muchos problemas a la hora de sumar la columna de Importe.

Agradecería alguna ayuda.
  #2 (permalink)  
Antiguo 22/05/2007, 08:29
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: Redondeos en SQL Server

El tipo flotante y real son valores aproximados.

Si es un importe tal vez te seria mejor seria almacenarlo como tipo Money,
yo cuando requiero numeros con precision y escalas especificas utilizo el tipo decimal.

Seria bueno que te echaras un clavado en la ayuda de sql server para que identifiques el tipo de dato que mas te conviene utilizar en tu caso.

Saludos.
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:37.