Это ошибка в Delphi? Или во мне? помогите разобраться!

  • Автор темы ALEXby
  • Дата начала
A

ALEXby

#1
Во время работы участка программы заметил ошибку:
Пытаюсь вывести значения х1 пока оно не станет больше х2 с шагом h:

repeat начало цикла
begin
memo1.Lines.Add(floattostrf(x1,fffixed,5,2)+#13); вывожу в окно значение х1
x1:=x1+h; увеличиваю на h
end;
until x1>x2; сравниваю с х2

Теперь самое интересное:
при х1=0.1; х2=1; h=0.1;
прога выдает:
0,10
0,20
0,30
0,40
0,50
0,60
0,70
0,80
0,90
ВОПРОС: где значение х1=1,00???
а при х1=1; х2=10; h=1; всё нормально
прога выдает:
1,00
2,00
3,00
4,00
5,00
6,00
7,00
8,00
9,00
10,00

Может кто-нибудь знает в чём причина?
В архиве лежит проект с программой.
 

Вложения

  • 167.9 КБ Просмотры: 10
M
#2
Может кто-нибудь знает в чём причина?
В архиве лежит проект с программой.
Это особенность хранения типа.
На самом деле на последней итерации у тебя в переменной x1 значение не 1.0 а 1.000000....01
Поменяй тип переменных с extended на real и все будет ок.
 
A

ALEXby

#3
пасиб за информацию, на будущее буду знать, а в проге я просто к x2 прибавил h/10, что тоже работает :rolleyes: