Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-12-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Question como truncar flotantes?

Hola foro, buehh otra vez yo y mis problemas, tengo dos variables de tipo double pero la empresa para la que estoy haciendo la aplicación solo maneja 3 digitos después del punto o sea 9.123 y no más, si yo hago una resta de un volumen por decir 110-100.001 me manda 9.99899999999999 con algunos otros números si lo trunca 200-100.001 me manda 99.999, por qué hace esto?, existe alguna forma de truncar los flotantes? o que opción me recomiendan?, les agradezco de antemano cualquier ayuda que tengan al respecto.
Saludos
Yo.
Responder Con Cita
  #2  
Antiguo 13-12-2004
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Poder: 21
Er_Manué Va por buen camino
Si lo que quieres es redondear con x dígitos decimales de precisión puedes usar la función RoundTo(numero,precision) debes incluir la librería Math en el uses.

Código:
miVar := 1.3256;
// Redondeamos con 3 dígitos de precisión
miVar := RoundTo(miVar, -3);

// Ahora tendríamos en miVar el valor 1.326
salu2
Responder Con Cita
  #3  
Antiguo 13-12-2004
Avatar de Dantael
Dantael Dantael is offline
Miembro
 
Registrado: nov 2003
Posts: 50
Poder: 21
Dantael Va por buen camino
Exclamation gracias pero

Hola Muchas gracias por tu ayuda estoy utilizando delphi 5 y puse en el uses Math, luego puse la función RoundTo como me lo indicaste pero me manda este error undeclared idintifier 'RoundTo' ya busque la función en la ayuda de delphi pero no aparece, Gracias nuevamente

mi declaración es así
saldoact:=RoundTo(saldoact,-3);
Saludos
Responder Con Cita
  #4  
Antiguo 13-12-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Otra solución a falta de la función en D5 es multiplicar el número por 1000, extraer la parte entera y volver a dividirlo por 1000.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 14-12-2004
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
Esta funcion Redondea Numeros reales segun la cantidad de decimales y el tipo de redondeo (Truncado o Simetrico) que le pasemos por parametro.
Devuelve un String porque yo la uso para visualizar los numero en un String pero se puede convertir el String a Float si es necesario.



Function Redondeos(Var Numero: real; Cant: Integer; TipoRedondeo: Char): String;
var
Formato: String;
j: Integer;
Begin
// 'S' o 's' significa Redondeo Simétrico, de lo contrario es Truncado.
if (TipoRedondeo = 's') or (TipoRedondeo = 'S') then
Begin
if Cant = 0 then
Formato := '0'
else
Formato := '0.';
for j:=1 to Cant do
begin
Formato := Formato + '0';
end;
Result := FormatFloat(Formato,Numero);
End
Else
Begin
Result := Copy(FloattoStr(Numero),1,Pos(',',FloattoStr(Numero))-1) + Copy(FloattoStr(Numero),Pos(',',FloattoStr(Numero)),Cant+1);
End;
End;

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
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 01:38:15.


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