FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Redondeos con Firebird 2.0
Hola a todos.
Probad a ejecutar esta sentencia en Firebird, y decidme si estoy loco, o que: SELECT CAST(1.5 * (20.45 ) * 100 AS INTEGER) / 100, CAST(1.5 * (20.45 - 0) * 100 AS INTEGER) / 100 FROM una_tabla_cualquiera El primer campo devuelve 30,68, y el segundo 30,67. ¿Hay alguna explicación lógica? He probado a poner - 0.0 (por si fuese un problema de tipos de datos), y seguimos en las mismas. El resultado correcto del redondeo de 30.675 es 30.68, pero no se cómo llegar hasta él. Gracias. |
#2
|
||||
|
||||
Así a simple vista, quita el "as intenger", estás forzando a quitar los decimales
|
#3
|
|||
|
|||
Oño, ahí está la magia del asunto. Para hacer los redondeos (sin usar rounds de udfs ni leches), pretendía aplicar esto, pero al restar (aunque sea un 0) se "escacharra" el resultado.
Prueba a ejecutarlo y te sorprenderás. Bueno, ¿y cómo redondeáis vosotros? Help please!!! |
#4
|
||||
|
||||
Bueno, la verdad es que en la base de datos no acostumbro a redondear nada, guardo todo según lo calculado desde Delphi.
Algo asi como esta función: Código:
function Redondeo (valor:Double; decim:integer = 0): Double; var factor: Double; begin factor := IntPower(10,decim); if valor > 0 then Result := (TRUNC((valor*factor)+0.5)) / factor else Result := (TRUNC((valor*factor)-0.5)) / factor; end; |
#5
|
|||
|
|||
Es que en mi tabla de detalle de facturas tengo un campo BaseImponible que es COMPUTED BY. Lo creé así por consistencia y... EN QUÉ HORA!!!
|
#6
|
|||
|
|||
En lugar de hacer el CAST as INTEGER haz un CAST as NUMERIC(6,2)
|
#7
|
|||
|
|||
Otias, en cuanto llegue a casa lo pruebo. ¡Gracias!
|
#8
|
|||
|
|||
Nada, el resultado es el mismo que si no hubiese redondeado.
Juer, vaya venta. ¿Ninguno hace redondeos usando campos COMPUTED BY en la propia base de datos? Ayudaaa |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
alguien ha utilizado Firebird DDX provider? (conectarse con db en firebird!) | JuanErasmo | .NET | 1 | 04-11-2006 16:17:12 |
problemas con float y redondeos | wonder boy | Firebird e Interbase | 17 | 27-12-2005 20:59:06 |
Problemas con Redondeos | AGAG4 | Varios | 4 | 14-11-2005 23:38:44 |
Firebird : Llamado para probadores de Firebird 2.0 | JOSEPE | Firebird e Interbase | 0 | 12-03-2005 20:33:18 |
Problemas Firebird Super Server 1.5 con RFunc Firebird v 1.0 | Prophoenix | Firebird e Interbase | 1 | 09-03-2004 11:40:48 |
|