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(0, ndec);
return FormatFloat(res, nro-(int)nro);
}
Ejemplo de uso:
Código PHP:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double nro = 110.0100999999999942;
AnsiString msg = formatDbl(nro, 4);
ShowMessage(msg);
}
Saludos