> > If this program compiles and works fine: > > program floattest; > > > > uses sysutils; > > var a,b:double; > > > > begin > > a:=0.5; > > b:=0.3; > > writeln(format('%5.3f',[a*b])); > > > > end. > > > > > > > > can I assume that either my compiler has been built with the right > > options or I have a working fpu? > > yes. > > > I'm asking because jose original test program fails here, while the > > above program correctly prints out 0.150 > > does the above work if you set a or be to a negative number? my > softfloat crashes with writeln(negative number).
negative number problem is not in float operation but in format or strings subsystem. try this new example: program floattest; uses sysutils; var a,b,c,d,e:double; begin a:=0.5; b:=0.3; writeln(format('%5.3f',[a*b])); a:=-0.5; c:=a*b; d:=a*c; writeln(format('%5.3f',[d])); if (c < 0) then begin // e := abs(c); seems not to work! please remove // and try it e := -1*c; // remove or comment if you use abs in above line writeln('-'+format('%5.3f',[e])); end; end. perhaps, I think now, part of problem can be in something relative abs or used by abs. comment your results, regards Jose Pascual _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal