рассчитать процентное увеличение и уменьшение двух значений - PullRequest
1 голос
/ 14 июля 2009

Я беру с сервера значение «Доход за эту неделю» и «Доход за последнюю неделю» и сохраняю их как: RevenueThisWeek = objRevenueThisWeek ("ВЫХОД") RevenueLastWeek = objRevenueLastWeek ("REVENUE") Затем я рассчитываю процент от них как: ДоходПроцент = ДоходЭтиВедек - ДоходПоследнийВик ДоходПерцент = ДоходПерцент / ДоходПоследний ДоходПерцент = ДоходПерцент * 100

Проблема здесь заключается в том, что, если выручка: «ThisWeWeek »и« Доход », равные 0, я получаю следующее сообщение об ошибке.

Ошибка выполнения Microsoft VBScript '800a0006'

Переполнение


1010 * редактировать * Забыл упомянуть. Я создал оператор if как If (RevenueThisWeek AND RevenueLastWeek) = "0" Then Else RevenuePercent = RevenueThisWeek - RevenueLastWeek RevenuePercent = RevenuePercent / RevenueLastWeek RevenuePercent = RevenuePercent * 100 End If Но это дало мне такие результаты, как: Last Week This Week % Change Revenue $49.99 $72.97 0%

Ответы [ 4 ]

3 голосов
/ 14 июля 2009
2 голосов
/ 14 июля 2009
RevenuePercent = RevenueThisWeek - RevenueLastWeek
If RevenueLastWeek >= .01 Then '1 cent minimum. >0 can get messy.'
   RevenuePercent = RevenuePercent / RevenueLastWeek
Else
   RevenuePercent = 0
End If
RevenuePercent = RevenuePercent * 100   

Почему> .01?

VBScript не имеет десятичного типа и по умолчанию равен float, что означает, что вы можете получить значение .0000004505 или что-то ужасное, что все равно приведет к переполнению. Если вы имеете дело с десятыми долями цента, измените его на

If RevenueLastWeek >= .001 Then
1 голос
/ 14 июля 2009

Ну, вы просите ASP выполнить следующий расчет:

RevenuePercent = RevenueThisWeek - RevenueLastWeek
RevenuePercent = RevenuePercent / RevenueLastWeek
RevenuePercent = RevenuePercent * 100

или, учитывая цифру 0 для ДоходовЭтот Недели и ДоходовПоследних:

RevenuePercent = 0 - 0
RevenuePercent = 0/0
RevenuePercent = 0*100

проблемная строка на самом деле вычисление середины:

ДоходПроцент = 0/0

когда вы просите компьютер разделить на 0 - и это невозможно. Вам необходимо добавить оператор IF в соответствии со следующим псевдокодом:

IF RevenueLastWeek>0 THEN ...perform calculation.. ELSE RevenuePercent=0 ENDIF
0 голосов
/ 14 июля 2009

По сути это то, что вы делаете:

RevenuePercent = (objRevenueThisWeek ("REVENUE") - objRevenueLastWeek ("REVENUE")) * 100 / objRevenueLastWeek ("REVENUE")

ЕслиobjRevenueLastWeek ("REVENUE") = 0, то вы делите на 0 и, следовательно, переполнение.Вам может потребоваться условное, чтобы учесть это дело.

-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...