Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод числа в строку и обратно 
:(
    Опции темы
anr0ID
  Дата 4.4.2011, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.3.2011

Репутация: нет
Всего: нет



Дело в следующем: когда считаются погрешности и переводятся в строку числа странные получаются. 
Например: 1,99-1,96 получается результат 0,02999999999. Я понимаю, что юзать FloatToStr и StrToFloat в рассчётах - это моветон, но другого выхода не знаю. 
И проверка погрешностей не осуществляется, вроде смотрел, чему равны переменные, вводил их значение, но все равно говорит, что неправильно.
Код

procedure TForm6.Button1Click(Sender: TObject);
var
   volt1,volt2,volt3,volt4,volt5        :real; //переменные для StrGrid1
   pog1,pog2,pog3,pog4,pog5     :real; //расчет погрешности
   aa1, aa2, aa3,aa4,aa5 :real; //для расчета Д
   aSHk2                 :real; //эталонные значения
   aSHk3                 :real; //------------------
 
 
 
begin
 aSHk2 := 1.99;
 aSHk3 := 2;
 
   volt1 := StrToFloat (StringGrid1.Cells [1,1]);// ----------------------------------
   volt2 := StrToFloat (StringGrid1.Cells [1,2]);//
   volt3 := StrToFloat (StringGrid1.Cells [1,3]);//ввод значений в поле для погрешностей
   volt4 := StrToFloat (StringGrid1.Cells [1,4]);//
   volt5 := StrToFloat (StringGrid1.Cells [1,5]);//------------------------------------
 
   aa1:= StrToFloat (StringGrid2.Cells [1,1]);
   aa2:= StrToFloat (StringGrid2.Cells [1,2]);
   aa3:= StrToFloat (StringGrid2.Cells [1,3]);
   aa4:= StrToFloat (StringGrid2.Cells [1,4]);
   aa5:= StrToFloat (StringGrid2.Cells [1,5]);
 
//расчет погрешностей
   if (sTT1>aSHk2) then
      pog2:=sTT1-aSHk2
      else
     pog2:= aSHk2-sTT1;
 
    if (sP323>aSHk3) then
      pog3:=sP323-aSHk3
      else
      pog3:=aSHk3-sP323;
 
   if (sB338>aSHk2) then
      pog4:=sB338-aSHk2
      else
      pog4:=aSHk2-sB338;
 
   if (sBK79>aSHk2) then
      pog5:=sBK79-aSHk2
      else
      pog5:=aSHk2-sBK79;
 
 
//проверка показаний         
if (aa1 = 0) and (aa2 = sTT1) and (aa3 = sP323) and (aa4 = sB338) and (aa5 = sBK79) then
    MessageDlg('Все верно', mtInformation, [mbOK], 0)            
    MessageDlg('Сопоставлено неверно', mtError, [mbOK], 0);
//проверка погрешностей
if (volt1=0) and (volt2=pog2) and (volt3=pog3) and (volt4=pog4) and (volt5=pog5)then
 
    MessageDlg('Все верно', mtInformation, [mbOK], 0)            
else
    MessageDlg('Сопоставлено неверно', mtError, [mbOK], 0);
 
 
end;

PM MAIL   Вверх
northener
Дата 4.4.2011, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(anr0ID @  4.4.2011,  01:11 Найти цитируемый пост)
Дело в следующем: когда считаются погрешности и переводятся в строку числа странные получаются. 
Например: 1,99-1,96 получается результат 0,02999999999.

Читать до полного просветления
Машинная арифметика имеет свои особенности, по сравнению с "бумажной" арифметикой.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
amsoft
Дата 4.4.2011, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



вместо real используй currency
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1050 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.