du könntest
FormatFloat benutzen, und eine abfrage erstellen, ob es eine ganze zahl ist, z.B. so:
Delphi-Quellcode:
var A,B: Extended;
const Frmt: array[Boolean] of string[5] = ('#','#.000');
// A := 3;
// B := 5.3;
Edit1.Text := FormatFloat( Frmt[Frac(A*B) <> 0] , A*B );
{bzw.}
if Frac(A*B) <> 0 then
Edit1.Text := FormatFloat('#.000',A*B) //alle vorkomma-stellen, 3 nachkomma-stellen
else Edit1.Text := FormatFloat('#',A*B); //nur vorkomma-stellen