Страница 1 из 1

Как округлить сумму в алгоритме?

Добавлено: 03 мар 2007, 11:51
galera
При настройке алгоритма по врем.разницам приходится сравнивать стоимость ОС(Stoim) с полным износом ОС(SumIzn+SiznM). И часто условия (например Stoim <= SumIzn+SiznM)не срабатывают, так как Stoim=634783.0000000001, а к примеру SumIzn=634782 и SiznM=1, в карточке единички на хвосте конечно не видно. И откуда она берется? Ведь, принимая к учету ОС, вводим стоимость рубли да копейки, и таких кривых сумм дофига. да хрен с ними. Хочу округлить эту заразу, пишу round(SPKATOS.Stoim,2), в ответ те же 634783.0000000001. Че за глюк не знаю, если ручками ввести длинную стоимость, то округляет. Как отрезать или округлить?

Добавлено: 05 мар 2007, 11:16
Алексей
Попробуй так
if abs(stoim-sumizn-siznm)<0.005 then ...

Добавлено: 20 мар 2007, 11:32
Ros
попробуй в каталоге методов учета, по нужному методу учета, в поле"Округление износа" поставить -округлять по правилам >=0.5 и поставь округлять до 0.01

Добавлено: 21 мар 2007, 10:22
galera
Проверила, какое округление стоит в методах учета в ОС. Так и стоит - по правилам >=0.5 и округлять до 0.01, стандарт наверное. Да это только к износу и относится, но я поэксперементировала с разными значениями, моим числам не помогло. Завожу карточку ОС для пробы, ставлю стоимость 900, в карточке 900 и стоит, но если, находясь в этом же поле стоимости, нажимаю a+b (Вычислить и модифицировать) то вижу: Выражение SPKATOS.STOIM
Величина 900.0000000000001

все, полезла в таблицу SPKATOS , визуально там 900.0000000000001000, но если выделить, то 900
хрень полная.
Ведь в алгоритме программа при сравнении все-таки учитывает эти единички на хвосте, да и округлить их не дает, потому что их как бы нет. Наверное из-за формата в таблицах, у Stoim (Double. размер 8) и что? или смещение тут роль играет? 16-ричный формат? ХЗ. Поставила условие примерно как Алексей советует.

Добавлено: 21 мар 2007, 10:44
edward_K
сделайте trunc(????,0)