Ver Mensaje Individual
  #13  
Antiguo 05-07-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

La diferencia infinitesimal (0.1001 y 0,0100999999999942) se produce por que el número no es expresable en una fracción binaria exácta. Pero en la práctica, se reduce a un problema de visualización, podrías hacer:
Código PHP:
AnsiString formatDbl(const double nro, const int ndec)
{
  
AnsiString zeros "0000000000000000000";
  if (
ndec zeros.Length())
   throw 
Exception("Numero de decimales muy grande");

  
AnsiString res "0." zeros.SubString(0ndec);
  return 
FormatFloat(resnro-(int)nro);

Ejemplo de uso:
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
double nro 110.0100999999999942;
  
AnsiString msg formatDbl(nro4);

  
ShowMessage(msg);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita