Форум: "Начинающим";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
ВнизОцените код $-)) Найти похожие ветки
← →
MikhailV (2006-09-18 14:15) [0]
//-----------------------------------------------------------------------------
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;
← →
Anatoly Podgoretsky © (2006-09-18 14:56) [1]Ну оценил.
← →
MikhailV (2006-09-18 15:07) [2]Увидел - обомлел, не мог не поделиться. Это коммерческий продукт!
← →
Anatoly Podgoretsky © (2006-09-18 15:09) [3]А я думал, ты цену хочешь узнать, а ты радостью делишься.
← →
MikhailV (2006-09-18 15:14) [4]Да, низковато, но радует ;)
← →
Рамиль © (2006-09-18 15:14) [5]А я думал мне платить будут за каждое использование этого кода.
← →
MikhailV (2006-09-18 15:21) [6]Мы платим...
← →
TUser © (2006-09-18 15:40) [7]IncDay
← →
sniknik © (2006-09-18 15:45) [8]> Мы платим...
за каждый добавленный знак при повышении точности округления? круто.
← →
MikhailV (2006-09-18 15:56) [9]
> TUser © (18.09.06 15:40) [7]
> IncDay
Да было что-то вроде. Сходу только :
// Функция FindBirstDay ищет день рождения по возрасту на заданную дату
// Возвращает дату рождения.
// Параметры:
// 1) InCurDate - дата, на которую рассчитан возраст (в день рождения 0,0,0);
// 2) InYear - кол-во полных лет на InCurDate;
// 3) InMonth - кол-во полных месяцев на InCurDate;
// 4) InDay - кол-во полных дней на InCurDate.
← →
Игорь Шевченко © (2006-09-18 16:21) [10]
> Оцените код $
$-100
← →
MikhailV (2006-09-18 16:23) [11]> $10000...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c