![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Очередная ошибка точности???!!!
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.