Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с преобразованием числа в строку

32K
29 ноября 2008 года
Serj123
36 / / 11.07.2008
Помогите, не могу понять в чем дело.
Перем Perem задаю число 3.1, а на экран выводится 3.09999. не могу понять в чем тут ошибка. По-моему все верно.
Подскажите как избежать этой ситуации.

{$N+}
{$E+}
Var
Stroka: String[20];
Perem: Double;
Begin
Perem:=3.1;
Str(Perem,Stroka);
Write(Stroka);
ReadLn;
End.
431
29 ноября 2008 года
sherry
207 / / 16.10.2006
в Delphi есть функция FloatToStr() как раз для такого случая
32K
29 ноября 2008 года
Serj123
36 / / 11.07.2008
Только эта программа пишется в Borland Pascal 7.0.
А там такой функции, насколько я знаю нет
2.1K
30 ноября 2008 года
smoki
115 / / 05.11.2006
Убери директиву, {$N+} тогда все нормально будет работать:)
32K
30 ноября 2008 года
Serj123
36 / / 11.07.2008
Только тогда программа перестанет работать с числами, имеющими большую степень и перестанет поддерживать тип Double.
32K
30 ноября 2008 года
Serj123
36 / / 11.07.2008
Вроде бы разобрался в чем проблема.
Паскаль все вещественные числа перед вычислениями преобразует в тип Extended, а затем обратно. Для более правильного решения нужно и использовать этот тип, а не другие, урезанные.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог