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

Почему Delphi делит не верно?   Найти похожие ветки 

← →
BigLamer   (2002-01-04 12:57) [0]

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


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


← →
Alx2 ©   (2002-01-04 13:06) [1]

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


← →
Юрий Зотов ©   (2002-01-04 13:09) [2]

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

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


← →
Alx2 ©   (2002-01-04 13:11) [3]

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


← →
BigLamer   (2002-01-04 13:31) [4]

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



Страницы: 1 вся ветка

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



Память: 0.45 MB
Время: 0.005 c
4-66404
Undert
2001-11-22 09:27
2002.01.21
ПОМОГИТЕ!


1-66302
VlNek
2002-01-04 18:00
2002.01.21
Конвертирование bmp в jpeg


6-66316
ant_prg
2001-10-26 15:50
2002.01.21
Передача звука по сети


1-66267
hacker
2002-01-01 21:48
2002.01.21
Обработка событий в дмнамически создаваемых компонентах


1-66259
Quest
2001-12-29 09:44
2002.01.21
Пропадает каретка в режиме редактирования ячейки TStringGrid




   Наверх