Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.049 c
14-1116698692
mySh
2005-05-21 22:04
2005.06.14
Не грузятся картинки в PHP


6-1111439002
Zion
2005-03-22 00:03
2005.06.14
Как узнать IP-адрес компа в локалке по его сетевому имени?


9-1110736076
Falcon(TFsoft)
2005-03-13 20:47
2005.06.14
My first game....


3-1115812937
Юленька
2005-05-11 16:02
2005.06.14
Удаление столбцов


9-1111162648
Andrewk
2005-03-18 19:17
2005.06.14
Glscene





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский