Проблема с преобразованием числа в строку
Перем Perem задаю число 3.1, а на экран выводится 3.09999. не могу понять в чем тут ошибка. По-моему все верно.
Подскажите как избежать этой ситуации.
{$N+}
{$E+}
Var
Stroka: String[20];
Perem: Double;
Begin
Perem:=3.1;
Str(Perem,Stroka);
Write(Stroka);
ReadLn;
End.
в Delphi есть функция FloatToStr() как раз для такого случая
А там такой функции, насколько я знаю нет
Убери директиву, {$N+} тогда все нормально будет работать:)
Только тогда программа перестанет работать с числами, имеющими большую степень и перестанет поддерживать тип Double.
Паскаль все вещественные числа перед вычислениями преобразует в тип Extended, а затем обратно. Для более правильного решения нужно и использовать этот тип, а не другие, урезанные.