Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2004
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question 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.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 26-11-2004
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:53: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
Copyright 1996-2007 Club Delphi