Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cómo truncar decimales (https://www.clubdelphi.com/foros/showthread.php?t=50658)

onomatopeya 24-11-2007 12:29:09

Cómo truncar decimales
 
Hola buenas, quería preguntaros cómo puedo truncar decimales en c++ builder. Porque me sale un chorro de decimales y me gustaría que me salieran por ejemplo 2 decimales. Gracias de antemano. Saludos.

dec 24-11-2007 12:34:39

Hola,

Echa un vistazo a la función "FormatFloat()", que, supongo, también tienes en C++ Builder.

onomatopeya 24-11-2007 12:41:39

Pero..esto es para convertir un AnsiString a un float o algo así, ¿no?. Esto es lo que pone en el builder:

Formats the floating-point value given by value using the format string given by format.

static AnsiString __fastcall FormatFloat(const AnsiString& format,const long double& value);

dec 24-11-2007 13:05:35

Hola,

Es al contrario: conviertes un "double" en una cadena. Claro que no sé si es lo que necesitas o qué...

onomatopeya 24-11-2007 14:39:48

Yo necesito que un float que me saca por ejemplo esto 0.333333333, truncarlo a un numero con 2 decimales, que quedaria así 0,33

dec 24-11-2007 15:05:46

Hola,

Pues a lo mejor la función "RoundTo()" de la unidad "Math" te apaña:

Código Delphi [-]
var
  dec: Double;
begin
  dec := 91.2345;
  dec := RoundTo(dec, -2);

  // Muestra 1,23
  ShowMessage( FloatToStr(dec) );
end;

onomatopeya 24-11-2007 15:18:57

Pues el caso esque lo he intentado con RoundTo y me dice que es una función indefinida, y he hecho el include siguiente: #include <math.h> :confused:

dec 24-11-2007 15:48:38

Hola,

Pues acaso no exista esa función en tu versión de C++ Builder. Esta es la implementación de la función "RoundTo()":

Código Delphi [-]
uses
  Math;

type
  // Acaso no dispongas de esto
  TRoundToRange = -37..37;

function RoundTo(const AValue: Double;
 const ADigit: TRoundToRange): Double;
var
  LFactor: Double;
begin
  LFactor := Math.IntPower(10, ADigit);
  Result := Round(AValue / LFactor) * LFactor;
end;

onomatopeya 24-11-2007 16:02:05

Muchas gracias por la ayuda. :)


La franja horaria es GMT +2. Ahora son las 14:00:07.

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