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

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

типы переменных


IgoX ©   (2005-07-13 13:45:00) 

Привет всем!
var fio_len :integer;
var pr      :real;
..
pr:=15/100;
fio_len:=Round(10*pr);

Всегда выдает значение 1 как бы неменял значения переменных. В delphi нерублю вот и спрашиваю а какие типы данных нужны что бы это работало правильно?


Kolan   (2005-07-13 15:31:00) [1]

Real types + F1в Delphi

float + F1в C

и сравнивать


Digitman   (2005-07-13 15:19:00) [2]


> Всегда выдает значение 1 как бы неменял значения переменных


вот только вратьне надо !


> округление какоето непонятное


а какое для тебя "понятное" ?

ты считаешь, что только то округление, о котором ты имеешь некое представление, и есть единственно существующее и верное округление в мире ?


IgoX   (2005-07-13 15:06:00) [3]

а что используется в Delphi вместо float


Igor_thief   (2005-07-13 14:34:00) [4]

Может тебе нужен SimpleRoundTo (модуль Math)?


Kolan   (2005-07-13 14:29:00) [5]

Точно поленился не набрал. Действительно будет меньше 0,15...
:')


evvcom   (2005-07-13 14:11:00) [6]

А кто сказал, что 15/100 = 0.15 для переменной real?


Kolan   (2005-07-13 14:01:00) [7]

Хм у вас ошибка где то проверил
ShowMessage(IntToStr(Round(1.5)));
Выдает 2


IgoX   (2005-07-13 13:56:00) [8]

округление какоето непонятное.


Kolan   (2005-07-13 13:56:00) [9]


> нужны что бы это работало правильно?

А как правильно.

ShowMessage(IntToStr(Round(10*2)));Выдает 20 :)


Kray   (2005-07-13 13:51:00) [10]

хелп по roundu посмотри. там оч. красивый пример есть.
возможно проблема не в типах, а в алгоритмах округления.
Выбери по See Also в помощи для Rounda какую нито еще функцию по округлению.


DiamondShark   (2005-07-13 13:49:00) [11]


> Всегда выдает значение 1 как бы неменял значения переменных

Это как?


> бы это работало правильно?

Какой результат считается правильным?


Kolan   (2005-07-13 13:48:00) [12]


> Всегда выдает значение

А что от раза к разу что - то vменяется.
pr = 0,15
pr * 10 = 1,5
Round(1,5) = 1;

У вас все правильно работает


Наверх

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