AS2: Как выполнить итерацию X раз в процентах (с циклической ссылкой)? - PullRequest
0 голосов
/ 24 марта 2011

Вот вопрос для Excel / math-wizards.

У меня проблемы с выполнением вычисления, основанного на формуле с циклической ссылкой.Расчет был выполнен на листе Excel.

Я вычел следующие уравнения из файла Excel:

a = 240000

b = 1400 + c + 850+ 2995

c = CEIL ((a + b) * 0,015, 100)

После итераций общая сумма A + B должна составлять 249045 (где b = 9045).

В файле Excel это дает циклическую ссылку, которой разрешено повторяться 4 раза.

Моя проблема: пересоздать вычисление в AS2, выполнив 4 итерации.

Я недостаточно хорош в математике, чтобы решить эту проблему.

Может ли кто-нибудь мне помочь?

Редактировать: Я изменил форматирование числа в переменной a.Извините, я из ДК, и мы используем точку в качестве разделителя тысяч.Я удалил его, чтобы избежать путаницы: -)

2-е редактирование: В третьем уравнении C используется функция Excels CEIL () для округления числа до ближайшей сотой.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011
function calcRegistrationTax( amount, iterations ) {

    function roundToWhole( n, to ) {

        if( n > 0 )
            return Math.ceil( n/ to ) * to;
        else if( n < 0)
            return Math.floor( n/ to ) * to;
        else
            return to;
    }

    var a = amount;
    var b = 0;
    var c = 0
    for (var i = 0; i < iterations; i++){           
        b = basicCost + ( c ) + financeDeclaration + handlingFee;       
        c = ( a + b ) * basicFeeRatio;
        c = roundToWhole( c, 100 ); 
    }

    return b;
}

totalAmount = 240000 + calcRegistrationTax( 240000, 4 ); // This gives 249045

Это удалось, спасибо Бенджамину за помощь.

0 голосов
/ 24 марта 2011

Я не знаю сценарий действия, но я думаю, что вы хотите:

a = 240000
c = 0
for (i = 0; i < 4; i++){
    b = 1400 + c + 850 + 2995
    c = (a + b) * 0.015
}

Но вам нужно определить, что использовать для начального значения c. Я предполагаю, что Excel использует 0, так как при выполнении вышеупомянутого я получаю то же значение, что и в Excel с итерациями = 4, c = 3734.69 ...

Где вы получите значение "A + B должно быть 249045"? В Excel и в приведенном выше AS, b только достигает 8979 с этими значениями.

...