Вниз
Скачать: CL | DM;

Как заставить 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
14-1117005456
Igorek
2005-05-25 11:17
2005.06.14
Как установить на клавиатуру индикатор раскладки?


14-1117031425
Kolan
2005-05-25 18:30
2005.06.14
Книги по проектированию.


14-1116690237
Nikolay M.
2005-05-21 19:43
2005.06.14
Кто помнит, как добраться до места прошлогодней MMP?


14-1117134416
Narikmen
2005-05-26 23:06
2005.06.14
image1


3-1115213043
Urvin
2005-05-04 17:24
2005.06.14
Как поставить ИГНОРКЕЙС в запрос?




   Наверх