![]() |
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. :D |
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; |
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 :D |
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. |
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. |
La franja horaria es GMT +2. Ahora son las 04:31:42. |
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