|
18.10.2008, 03:18 | #1 |
китайский стажер
|
Деление на ноль в финансовых отчетах
Постоянно выскакивала проблема с делением на ноль. Как от этого избавиться красиво?
Что испробовано: - Сначала в методе checkDivisionByZero была добавлена проверка на textBuffer.find('/(((0)+(0))-((0)+(0)))'), но это оказалось как мертвому припарка, потому что тут де выскочило сообщение типа "((a+b)/((a+b) - (a+b)) - деление на ноль. - Тогда в метод calculateColumnCalcListColumn был добавлен код X++: ZeroDivider = false; dividerpos = strscan(str2, '/',1,999); divider = substr(str2,dividerpos+1,strlen(str2)-dividerpos-1); if (dividerpos != 0 && divider != '') { bufdevider = strfmt(buf, divider); if (compiler.compile(bufdevider) && (! this.checkDivisionByZero(bufdevider))) { //BP Deviation documented tmpAmount = runbuf(bufdevider); } else { // info(strfmt("@SYS85024", str2, _ledgerBalColumnsDim.Column, idx_calc)); tmpAmount = 0; } if (tmpAmount == 0) ZeroDivider = true; } //if (compiler.compile(buf2) && (! this.checkDivisionByZero(buf2))) if (compiler.compile(buf2) && (! this.checkDivisionByZero(buf2)) && !ZeroDivider) { ... Как же это сделать красиво, может кто нибудь уже боролся с этим?
__________________
Может быть выйдет, а может не-е-е-ет... Новая песня вместо штиблет.. |
|
18.10.2008, 09:51 | #2 |
Member
|
Я в отчете пишу что-то вроде
#1 / (#2 + 1 / 1000000) Обычно, этого хватает.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: mazzy (2), Ivanhoe (2), Qaz Qwerty (1), максон (0). |
21.10.2008, 00:51 | #3 |
китайский стажер
|
Так это ж гениально! Спасибо!
__________________
Может быть выйдет, а может не-е-е-ет... Новая песня вместо штиблет.. |
|