![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция округления до данного знака. [D7, WinXP]
linx © (2008-12-04 11:28:00)Подскажите пожалуйста.
AndreyV (2008-12-06 05:12:00) [1]> [11] Григорьев Антон © (05.12.08 10:25)
> Возьмите лучше функию отсюда: http://cc.codegear.com/Item.aspx?
> id=21909 - те же самые тесты не выявили ни одной ошибки
> у этой функции.
Я эту функцию нашёл, когда заметил ошибки при расчете, благо было с чем сравнить. Интересно почему она так и не вошла в стандартные?
Германн (2008-12-06 00:43:00) [2]
> Григорьев Антон © (05.12.08 10:25) [11]
Где Вы, Антон были два года назад с таким советом?
:(
Loginov Dmitry (2008-12-05 21:36:00) [3]> Не надо таких доморощенных функций, их аналоги протестированы
> здесь: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1218
> - они дают ошибки
хм...
я в шоке! RoundSum при округлении до копейки дохнет на значениях >= 16384.0450. Видимо, довесок 0.0000000001 перестает учитываться. :(
> Возьмите лучше функию отсюда: http://cc.codegear.com/Item.aspx?
> id=21909 - те же самые тесты не выявили ни одной ошибки
> у этой функции.
Спасибо! Думаю, обязательно встроим данное решение в нашу систему учета.
Григорьев Антон (2008-12-05 10:25:00) [4]
> Loginov Dmitry © (04.12.08 22:02) [10]
> для мат. округления:
Не надо таких доморощенных функций, их аналоги протестированы здесь: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1218- они дают ошибки
Возьмите лучше функию отсюда: http://cc.codegear.com/Item.aspx?id=21909- те же самые тесты не выявили ни одной ошибки у этой функции.
Loginov Dmitry (2008-12-04 22:02:00) [5]для мат. округления:
function RoundSum(const ASumma: Double; Digits: Byte): Double;
var
MulValue: Integer;
Value: Extended;
begin
MulValue := Round(IntPower(10, Digits));
Value := ASumma * MulValue;
if Value < 0 then
Value := System.Trunc(Value - 0.5000000001)
else
Value := System.Trunc(Value + 0.5000000001);
Result := Value / MulValue;
Anatoly Podgoretsky (2008-12-04 15:02:00) [6]> Труп Васи Доброго (04.12.2008 14:55:08) [8]
Ну не называй ты это математическим, это школьное укругление, простое.
Труп Васи Доброго (2008-12-04 14:55:00) [7]> [4] stas © (04.12.08 12:27)
> Труп Васи Доброго © (04.12.08 12:16) [3]
> Банковское это как?
Банковское это так, округляет х.5 не до х+1, как в математическом округлении, а до ближайшего чётного числа. т.е. 1.5 округлится до 2 и 2.5 округлится до 2, а не до 3.
stas (2008-12-04 13:21:00) [8]ясно спасибо.
Ega23 (2008-12-04 12:31:00) [9]
> Банковское это как?
Там как-то четные в одну сторону, нечетные - в другую.
Григорьев Антон (2008-12-04 12:29:00) [10]
> stas © (04.12.08 12:27) [4]
> Банковское это как?
Оно же - бухгалтерское, см. http://www.delphikingdom.com/asp/viewitem.asp?catalogID=1217
stas (2008-12-04 12:27:00) [11]Труп Васи Доброго © (04.12.08 12:16) [3]
Банковское это как?
Труп Васи Доброго (2008-12-04 12:16:00) [12]> [1] Ega23 © (04.12.08 11:37)
> RoundTo + F1
Век живи - век учись! Один хрен - дураком помрёшь.
Даже не подозревал о существовании этой функции. Ещё ..надцать лет назад написал свою и до сих пор пользуюсь.
А эта RoundTo банковское округление делает, так что будь внимательнее при использовании. (это для
> [0] linx (04.12.08 11:28)
)
Григорьев Антон (2008-12-04 11:45:00) [13]http://www.delphikingdom.com/asp/answer.asp?IDAnswer=66843
Ega23 (2008-12-04 11:37:00) [14]RoundTo + F1