Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизКак заставить Delphi правильно считать? Найти похожие ветки
← →
viny (2005-05-26 00:59) [0]Недавно начал изучать Delphi и столкнулся вот с какой проблемой.
Дана математическая функция и необходимо вычислить значения y, соответствующие каждому значению x в интервале (nx <= x <= kx), с шагом dx. Контрольный расчет производится при nx = -1.5, kx = 0.5, dx = 0.2. В программе пишу цикл While x <= kx do (предварительно присвоив x := nx), далее следует расчетная часть программы. Все числовые переменные типа Extended. При запуске расчет заканчивается при x = 0.3, хотя в программе явно указано, пока x меньше или равен 0. При уменьшении шага до 0.1 - последнее значение x = 0.4, при шаге 0.02 расчет закончился таки при x = 0.5! И еще трабла, при шаге 0.1 в какой то момент x становится равным 0, вместо 0 на экране появляется 0.999999999998 (что то вроде этого). Подскажите, пожалуйста, кому не в лом, как застаить Delphi правильно считать с нормальной человеческой точки зрения? Чтобы в результате выполнения операции -0.1 + 0.1 получался 0, а не 0.999999999998.
← →
Almaz © (2005-05-26 03:48) [1]Советую Вам прочитать статью: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
Там есть ответы на Ваши вопросы.
Удачи.
← →
Defunct © (2005-05-26 04:01) [2]У вас цикл с предусловием, поэтому цикл завершается на один шаг раньше чем нужно. Используйте цикл с постусловием, и все будет нормально работать:
x := nx;
Repeat
// Вычисления
x := x + dx;
until x > kx; // Завершить при x > kx
> 0.999999999998.
быть такого не может, скорее 0.00000000~1. выводите округленный рез-тат на экран и все будет ок.
Например:Label1.Caption := Format("X = %3.3F",[x]);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c