Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Точность вычислений вещественных чисел


Автор: Rodeon 14.6.2018, 04:54
Необходимо стало немного более точные вычисления.
Как пример самое простое:
Код

  Q_gid:=(FDQuery2.Fields.Fields[8].Value*0.001)/(FDQuery2.Fields.Fields[4].Value*60*24*1000);

Где:
Q_gid: Extended;
FDQuery2.Fields.Fields[8].Value := 3000
FDQuery2.Fields.Fields[4].Value := 60

для проверки добавил пару строк:
Код

  sMemo1.Lines.Add('G_p: '+FloatToStr(FDQuery2.Fields.Fields[8].Value));
  sMemo1.Lines.Add('G_p: '+FloatToStr(FDQuery2.Fields.Fields[8].Value*0.001));
  sMemo1.Lines.Add('G_p: '+FloatToStr(FDQuery2.Fields.Fields[4].Value));
  sMemo1.Lines.Add('G_p: '+FloatToStr(FDQuery2.Fields.Fields[4].Value*60*24*1000));

До деления обе половинки верные получаются.
Получаю в столбик:
3000
3
60
86400000

После деления в переменную Q_gid приходит 0.

Что не так?

Отбой, мой косяк по невнимательности.
Передал явный тип переменной из таблицы - все заработало.
Т.е.
Код

  Q_gid:=(FDQuery2.Fields.Fields[8].AsExtended*0.001)/(FDQuery2.Fields.Fields[4].AsExtended*60*24*1000);


Все, пора спать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)