![]() |
Error mio o bug de Firebird?
Hola Foro
Utilizo FB 1.5.2 en este caso en Windows 2000 Esto que sucede es muy extraño, dado que en otras bases tengo operaciones parecidas y se comportan como corresponde. Paso a detallar: en un procedimiento ... declare variable vX numeric(9,2); ... vX = 1 - 50/100; ... el vX deberia tomar como valor 0.5, sin embargo siempre guarda 1. Probe con parentesis, 1 - (50/100), cambie de numeric(9,2) a numeric(9,4) y es lo mismo. Lo extraño, como mencione arriba, es que en otros procedimientos y funciones mas complejas siempre se comporta correcatamente FB. Saludos TJose |
Hola:
Estuve probando lo mismo en sql server y tengo el mismo problema. Esto es lo que encontré en la ayuda: Si un dividendo de tipo entero se divide por un divisor de tipo entero, el resultado es un entero en el que se trunca la parte fraccionaria del resultado, si hubiera. Creo que la solución por el momento es que hagas lo siguiente : vx=50*0.01 Si alguien conoce una mejor manera de realizarlo (utilizando operador de división o alguna palabra reservada), por favor postee asi nos sacamos la duda. Gracias. |
Gracias johncook
Como bien dices, cambiando la ecuacion se soluciona, pero que peligroso puede ser confiarse en que la ecucion esta bien planteada y no controlar los resultados. Saludos TJose |
jhoncook, tienes razon. En isql, ejecutando esto:
el resultado es 0. Al ser ambos operandos integer, el resultado tambien será integer. Ahora bien, si introducimos: sí nos devuelve 0.50, el resultado correcto, al ser uno de los operandos con dos decimales el resultado tambien nos lo devuelve con dos decimales. Un saludo |
La franja horaria es GMT +2. Ahora son las 07:59:56. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi