tstrreal3.pp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. { test by Graeme Geldenhuys }
  2. {$mode delphi}
  3. uses sysutils;
  4. procedure test;
  5. var
  6. Result: string;
  7. e: extended;
  8. r: double;
  9. begin
  10. e := 234.502;
  11. Result := FloatToStrF(e, ffGeneral, 15, 0);
  12. // Memo1.Lines.Add(Result); { prints 234.502 }
  13. writeln(result);
  14. if (result <> '234.502') then
  15. halt(1);
  16. r := 234.502;
  17. Result := FloatToStrF(r, ffGeneral, 15, 0);
  18. // Memo1.Lines.Add(Result); { prints 234.50200000000001 }
  19. writeln(result);
  20. if (result <> '234.502') then
  21. halt(1);
  22. r := 234.501;
  23. Result := FloatToStrF(r, ffGeneral, 15, 0);
  24. // Memo1.Lines.Add(Result); { prints 234.501 Why does this work? }
  25. writeln(result);
  26. if (result <> '234.501') then
  27. halt(1);
  28. r := 7.502;
  29. Result := FloatToStrF(r, ffGeneral, 15, 0);
  30. // Memo1.Lines.Add(Result); { prints 7.502 }
  31. writeln(result);
  32. if (result <> '7.502') then
  33. halt(1);
  34. r := 8.502;
  35. Result := FloatToStrF(r, ffGeneral, 15, 0);
  36. // Memo1.Lines.Add(Result); { prints 8.502000000000001 }
  37. writeln(result);
  38. if (result <> '8.502') then
  39. halt(1);
  40. end;
  41. begin
  42. test;
  43. end.