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

Тема в разделе "Delphi - FAQ", создана пользователем ALEXby, 14 июн 2009.

  1. ALEXby

    ALEXby Гость

    Во время работы участка программы заметил ошибку:
    Пытаюсь вывести значения х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

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

    Вложения:

    • Prog.rar
      Размер файла:
      167,9 КБ
      Просмотров:
      10
  2. mir

    mir Гость

    Это особенность хранения типа.
    На самом деле на последней итерации у тебя в переменной x1 значение не 1.0 а 1.000000....01
    Поменяй тип переменных с extended на real и все будет ок.
     
  3. ALEXby

    ALEXby Гость

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

Поделиться этой страницей