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

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

Очередная ошибка точности???!!!


wp2 ©   (2005-08-01 02:05:00) 

var a, b: Real;
begin
   a := 10;
   b := 0.2;
   Edit1.Text := IntToStr(Trunc(a/b)) // выводит 49!!!
End;

Если использовать вместо Trunc функцию Int, то результат будет тот же!!!

И что мне теперь делать?
Прибавить к a/b число 0,00000001 что ли?
А есть ли другой способ?

Round мне не нужен.


vrem   (2005-08-01 17:33:00) [1]

Перевести a и b в целые числа, избавиться от дробной части
затем делить, можно даже используя div - т.е. так, что бы дробная часть результата вообще не влияла ни на что.
в примере будет 100 делить на 2


HSolo   (2005-08-01 17:22:00) [2]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


Fay   (2005-08-01 16:01:00) [3]

Тяжёлый случай...


Чапаев   (2005-08-01 14:51:00) [4]

> Раунд мне не нужен. Так как логика программы требует отсечения
дробной части.
Так какие претензии? Trunc тебе дробную часть и отсёк...


Admido   (2005-08-01 14:48:00) [5]

A чего слелать то надо? 50 получить? =]


Edit1.Text := FormatFloat('#0', a/b); // 50 :)
Edit2.Text := FloatToStr(a/b);        // 50 :)


SergP   (2005-08-01 03:54:00) [6]

Может тебе  

var a, b: Currency;

подойдет в данном случае?


Lexa   (2005-08-01 03:45:00) [7]


> Silver... ©  


[3],[4] - результат один и тот же


Silver...   (2005-08-01 03:16:00) [8]

FloatToStr(RoundTo(a/b, 0))
или VarToStr(RoundTo(a/b, 0))


Lexa   (2005-08-01 02:36:00) [9]

x := 10/0.2;
intToStr(Trunc(x));


wp2   (2005-08-01 02:26:00) [10]

Раунд мне не нужен. Так как логика программы требует отсечения
дробной части.


Eraser   (2005-08-01 02:15:00) [11]

wp2   (01.08.05 02:05)

Попробуй Round.


Наверх

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