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

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

Оцените код $-)) [D6]


MikhailV ©   (2006-09-18 14:15:00) 


//-----------------------------------------------------------------------------
function KRound(Source: Extended; Precision: Integer): Extended;
//            1. Исправлена ошибка округления отрицательных чисел
//            2. Повышена точность округления - раньше можно было
//               округлять не более чем до 5-го знака (реально до 4-го),
//               теперь - до 9-го
var StrNumber, StrDelta: string;
   RoundPos, ErrCode: Integer;
   CompValue, Delta, Sign: Extended;
begin
 Str(Source:35:10, StrNumber);  // 11.04.2003 увеличение точности
 RoundPos:=Pos('.', StrNumber)+Precision;
 {11.04.2003 определяем знак округляемого числа}
 if (Pos('-', StrNumber) > 0) then
   Sign := -1
 else
   Sign := 1;
 {}
 if Precision > 0 then RoundPos:=RoundPos-1;
 if (Precision = 0) then
   StrDelta:='.'+Copy('0000000000000000000000', 1, Precision)+  //22 нуля - mv
                 Copy(StrNumber, RoundPos+1, Length(StrNumber))
 else
   if (Precision > 0) then
     StrDelta:='.'+Copy('0000000000000000000000', 1, Precision)+
                   Copy(StrNumber, RoundPos+2, Length(StrNumber))
   else
     if (Precision < 0) then
       StrDelta:=Copy(StrNumber, RoundPos, Length(StrNumber));
 Val(StrDelta, Delta, ErrCode);
 CompValue:=1/(Power(10, Precision))/2;
 {11.04.2003 "Дельта" должна иметь тот же знак, что и округляемое число}
 if Delta < CompValue then
   Result := Source - Delta*Sign
 else
   Result := Source - Delta*Sign + CompValue*2*Sign;
end;


MikhailV   (2006-09-18 16:23:00) [1]

> $10000...


Игорь Шевченко   (2006-09-18 16:21:00) [2]


> Оцените код $


$-100


MikhailV   (2006-09-18 15:56:00) [3]


> TUser ©   (18.09.06 15:40) [7]
> IncDay

Да было что-то вроде. Сходу только :
//    Функция FindBirstDay ищет день рождения по возрасту на заданную дату
//    Возвращает дату рождения.
//    Параметры:
// 1) InCurDate - дата, на которую рассчитан возраст (в день рождения 0,0,0);
// 2) InYear    - кол-во полных лет на InCurDate;
// 3) InMonth   - кол-во полных месяцев на InCurDate;
// 4) InDay     - кол-во полных дней на InCurDate.


sniknik   (2006-09-18 15:45:00) [4]

> Мы платим...
за каждый добавленный знак при повышении точности округления? круто.


TUser   (2006-09-18 15:40:00) [5]

IncDay


MikhailV   (2006-09-18 15:21:00) [6]

Мы платим...


MikhailV   (2006-09-18 15:14:00) [7]

Да, низковато, но радует ;)


Рамиль   (2006-09-18 15:14:00) [8]

А я думал мне платить будут за каждое использование этого кода.


Anatoly Podgoretsky   (2006-09-18 15:09:00) [9]

А я думал, ты цену хочешь узнать, а ты радостью делишься.


MikhailV   (2006-09-18 15:07:00) [10]

Увидел - обомлел, не мог не поделиться. Это коммерческий продукт!


Anatoly Podgoretsky   (2006-09-18 14:56:00) [11]

Ну оценил.


Наверх

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