there are multiple ways to convert a number to a string take a look on writestr var
vTst:string;
begin
WriteStr(vTst, 10.3456:8:2);
ShowMessage(vTst);
which should be identical with writeln it just outputs the result to a string variable of course the Format function var
vTst:string;
begin
vTst := Format('%.2F',[1234.456789]);
ShowMessage(vTst);
which returns a string formated the way you need it for multiple data types you can have multiple placeholders in the string with different types each and format will replace them all as needed. Keep in mind that the values order must much the place holder's order in the string.
Last but not least is the FloatToStrF method which works just like the format for a single value eg var
vTst:string;
begin
vTst := FloatToStrF(1234.456789,ffFixed,ffixed,9999,2);
ShowMessage(vTst);
Those are the main functions that you can use to convert a float to a string depending on your needs you use any one you fill most comfortable with, after that sending the string to the printer should be something easily solved. Have you discovered Datasets and lazReport yet? In your case I would use lazReport to design a report the way I want it and a virtual dataset to fill it with my data but that might be a bit over the top for a beginner so I'll just let you work your way to what ever comes natural and wait for your next question on the subject.