tstrreal3.pp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. DecimalSeparator:='.';
  11. e := 234.502;
  12. Result := FloatToStrF(e, ffGeneral, 15, 0);
  13. // Memo1.Lines.Add(Result); { prints 234.502 }
  14. writeln(result);
  15. if (result <> '234.502') then
  16. halt(1);
  17. r := 234.502;
  18. Result := FloatToStrF(r, ffGeneral, 15, 0);
  19. // Memo1.Lines.Add(Result); { prints 234.50200000000001 }
  20. writeln(result);
  21. if (result <> '234.502') then
  22. halt(1);
  23. r := 234.501;
  24. Result := FloatToStrF(r, ffGeneral, 15, 0);
  25. // Memo1.Lines.Add(Result); { prints 234.501 Why does this work? }
  26. writeln(result);
  27. if (result <> '234.501') then
  28. halt(1);
  29. r := 7.502;
  30. Result := FloatToStrF(r, ffGeneral, 15, 0);
  31. // Memo1.Lines.Add(Result); { prints 7.502 }
  32. writeln(result);
  33. if (result <> '7.502') then
  34. halt(1);
  35. r := 8.502;
  36. Result := FloatToStrF(r, ffGeneral, 15, 0);
  37. // Memo1.Lines.Add(Result); { prints 8.502000000000001 }
  38. writeln(result);
  39. if (result <> '8.502') then
  40. halt(1);
  41. end;
  42. begin
  43. test;
  44. end.