Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   problemas con cast en procedimiento almacenado (https://www.clubdelphi.com/foros/showthread.php?t=16423)

santiago14 26-11-2004 20:30:45

problemas con cast en procedimiento almacenado
 
Buen dia, estoy haciendo un procedimiento almacenado donde tengo que transformar un valor que es string (varchar(100)) en un float. Aclaro que estoy usando Firebird 1.5

Ahora, este es el store:

Código Delphi [-]
CREATE PROCEDURE RECUPEROIVA (
    NBR_VAR VARCHAR(100))
RETURNS (
    IVA FLOAT)
AS
begin
  /* Procedure Text */
  NBR_VAR = upper(NBR_VAR); /*lo paso a mayusculas por las dudas*/
  select cast(valor_var as float) from variables_entorno
  where nbr_var = :nbr_var
  into IVA;
end

El problema es que si le paso en valor_var un '0.21' me devuelve un 0.209999993443489 que ya sabemos que no es 0.21, igual ocurre con cualquier cosa que tenga decimales.
tal vez cast no se la sentencia adecuada para tal transformación, o quizas falta algun parámetro, no se cual podria ser, para que esto no ocurriera. Bueno, gracias una vez mas.

basti 26-11-2004 21:24:26

Hola.

El problema del float es que no puede representar cualquier número con exactitud, por eso te muestra el más aproximado que puede. Prueba con

cast (valor_var as DOUBLE PRECISION)

un saludo


La franja horaria es GMT +2. Ahora son las 10:15:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi