Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.10.2011, 14:43
freedomman freedomman вне форума
Новичок
 
Регистрация: 12.10.2011
Сообщения: 51
Репутация: 10
По умолчанию интересный случай... объясните

Код:
 r:=strtofloat(StringGrid1.Cells[i,j]);
        if (r=pr) then
         begin
          result:=strtofloat(StringGrid1.Cells[i,1])+strtofloat(StringGrid1.Cells[1,j]);
          
        end

и
Код:
        if (strtofloat(StringGrid1.Cells[i,j])=pr) then
         begin
          result:=strtofloat(StringGrid1.Cells[i,1])+strtofloat(StringGrid1.Cells[1,j]);
         
        end

оператор if работает по разному для этих вроде одинаковых значений.... почему???

Последний раз редактировалось freedomman, 20.10.2011 в 14:46.
Ответить с цитированием
  #2  
Старый 20.10.2011, 14:51
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Вставь после
Код:
r:=strtofloat(StringGrid1.Cells[i,j]);
строчку
Код:
ShowMessage(StringGrid1.Cells[i,j]+', а r = '+floattostr(r));
__________________
Google в помощь
Ответить с цитированием
  #3  
Старый 20.10.2011, 15:13
freedomman freedomman вне форума
Новичок
 
Регистрация: 12.10.2011
Сообщения: 51
Репутация: 10
По умолчанию

при
Код:
   if (strtofloat(StringGrid1.Cells[i,j])=pr) then
         begin
          result:=strtofloat(StringGrid1.Cells[i,1])+strtofloat(StringGrid1.Cells[1,j]);
         
        end
strtofloat(StringGrid1.Cells[i,j])=3,12 и pr=3,12 ,а в условие не заходит
Ответить с цитированием
  #4  
Старый 20.10.2011, 15:28
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Странно, если оно вообще хоть когда-либо работало.
Сравнение дробных чисел так не сделать. Дробные числа надо сравнивать приблизительно, то есть
Код:
if (a>b-eps)and(a<b+eps) then ...
Где eps задаете сами, что-нибудь около 0.01.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 20.10.2011, 15:31
freedomman freedomman вне форума
Новичок
 
Регистрация: 12.10.2011
Сообщения: 51
Репутация: 10
По умолчанию

о как) спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025