Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему Delphi делит не верно? [D5, Win95/98, WinME]


BigLamer ©   (2002-01-04 12:57:00) 

Почему следующий код выдает неверное значение переменной k? Ведь должно получаться так что k=0.1, а получается k=0,100000001490116. Я с этим уже сталкивался давным-давно, но забыл в чем тут дело.


procedure TForm1.FormActivate(Sender: TObject);
var
k:single;
begin
k:=1/10;
Edit1.Text:=FloatToStr(k);
end;


BigLamer   (2002-01-04 13:31:00) [1]

Благодарствую, double -помогло.Но я хотел с single. Ну да ладно и так сойдет.


Alx2   (2002-01-04 13:11:00) [2]

Также из Help узнаем, что тип single имеет 7-8 значащих цифр.
В Вашем примере верными являются 8 цифр. Большего требовать от типа single не получится


Юрий Зотов   (2002-01-04 13:09:00) [3]

Это совершенно нормальная вещь и Delphi здесь абсолютно ни при чем. Уж такова машинная арифметика действительных чисел. Все, что можно здесь сделать - это повысить точность, объявив k типа double или extended.

Исчерпывающие разъяснения см. здесь:
http://www.delphikingdom.com/helloworld/reals.htm


Alx2   (2002-01-04 13:06:00) [4]

Так все происходит с точностью до машинного ноля. Тем более, тип single 4-х байтовый. У него "машинный ноль" довольно большой


Наверх

Титульная страница Поиск, карта сайта Написать письмо