![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как огруглить число...? [D5]
KMM © (2002-03-01 12:48:00)Существует ли стандартная функция округления числа с заданной точностью? Т.е. как округлить например 6,786549... до третьего
(например) знака после запятой?
Заранее благодарю.
IronHawk (2002-03-01 13:46:00) [1]
> KMM
Ну если
> может есть
> какая-то стандартная функция чтоб сразу из числа в число.
То это случай Фэ ©
KMM (2002-03-01 13:28:00) [2]Спасибо всем еще раз.
Я обычно пользуюсь FormatFloat, но она
возвращает (так же как и CarrToStrF) строку, которую потом приходится снова превращать в число. Вот и подумалось, может есть
какая-то стандартная функция чтоб сразу из числа в число.
IronHawk (2002-03-01 13:13:00) [3]
> Фэ © (01.03.02 13:06)
> to IronHawk
> А не рано ли ты начал советовать ?
Незнаю рано или нет, это моё дело, просто помочь хотелось !
> Тем более муть голубую ?
У "белых" людей эта муть работает !
> Только надо иметь в виду, что из-за конечности разрядной
> сетки может вылезти ошибка и рез-т м.б. не 3.5, а 3.49999999999999
Вот поэтому и надо CurrToStrF !!!
2Фэ ©
В чужой ветке, огрызания и наезды на других, это невежество !
KMM (2002-03-01 13:10:00) [4]Спасибо!
Фэ (2002-03-01 13:06:00) [5]to IronHawk
А не рано ли ты начал советовать ?
Тем более муть голубую ?
function Roundto(var val: Double; num: integer): double;
var
j: integer;
dd: double;
begin
dd:=1;
case num of
0 : dd:=1;
1 : dd:=10;
else
for j:=1 to num do
dd := dd* 10;
end;
result:=int((val * dd + 0.5) / dd;
end;
Только надо иметь в виду, что из-за конечности разрядной сетки может вылезти ошибка и рез-т м.б. не 3.5, а 3.49999999999999
Виктор Щербаков (2002-03-01 12:59:00) [6]Умножь число на 10^(кол-во знаков после запятой).
Округли до целого (функция Round).
Раздели результат на 10^(кол-во знаков после запятой).
IronHawk (2002-03-01 12:56:00) [7]Есть разные типы округления !
Есть "обрезка", тоесть будет не 6,786549 а 6,786 !
Есть "аккуратная обрезка", тоесть будет не 6,786549, а урезаться в большую сторону ! (ну в этом случае 6,786549 ) будет тож 6,786 !
а так ващето проще :
CurrToStrF- это верняк ! Проверенно !