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

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

Как округлить 0.0294... до 0.3 [D5]


Roman_ ©   (2002-02-21 09:00:00) 

Никак не не найду функцию округления. Пробовал через FormatFloat
но это лишние преобразования туда и обратно. Может есть какая функция типа round, только для дробных чисел?


Black King   (2002-02-21 12:49:00) [1]

Sam znaju chto eto bred, potomu i napisal, chto korjavo napisano.

No luchshe eto, chem nichego. :o)


Роман_   (2002-02-21 12:32:00) [2]

Thanks всем!!!


Johnmen   (2002-02-21 11:40:00) [3]

Мужики, бросьте эти извраты на пустом месте ! Тем более, что автору ответ скорее всего уже не нужен...


Awex   (2002-02-21 11:34:00) [4]

Можно и так:
........
RArray : array [0..5] of integer = 1,10,100,1000,10000,100000);
.........

function RoundEx(Value: Extended; n:integer);
begin
Result:=Round(Value*RArray[n])/RArray[n];
end;


Брат   (2002-02-21 10:52:00) [5]

0,0294 к 0,3. Извини братец. Никак. Вот если 0,294 - это другой вопрос.


Johnmen   (2002-02-21 10:49:00) [6]

>Black King : извини, но это бред сумасшедшего программера !


Black King   (2002-02-21 10:42:00) [7]

Vot primer.
Napisano korjavo, no pri zelanii mozno i perepisat".

Function FloatRound(Value: Extended; Digits: Integer): Extended;
var
Digits10: LongInt;
DigitsString: String;
begin
DigitsString:="1";
while Length(DigitsString)<Digits+1 do DigitsString:=DigitsString+"0";
Digits10:=StrToInt(DigitsString);
Result:=Round(Value*Digits10)/Digits10;
end;


EsKor   (2002-02-21 10:05:00) [8]

В Delphi 6
Функции RoundTo, SimpleRoundTo
Округляют действительное число до заданного десятичного порядка.
Если в D5 нет таких, действуй как предложил MBo.
Смысл этих умножений и делений в том, что сначала увеличиваешь число на столько порядков до скольки десятичных порядков нужно округлить. При этом нужные десятые, сотые и т.д. переходят в целые. Потом округляешь до целых и возвращаешь порядок числа к первоначальному. Например, если нужно округлить до тысячных - умножаем на 1000 и т.п.


MBo   (2002-02-21 09:07:00) [9]

нет
x:=round(x*100)/100;


Наверх

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