0

这是 Excel / 数学向导的问题。

我在进行基于具有循环引用的公式的计算时遇到了麻烦。计算已在 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 中数字的格式。抱歉,我来自 DK,我们使用句点作为千位分隔符。我已将其删除以避免混淆:-)

第二次编辑:第三个等式,C 使用 Excels CEIL() 函数将数字四舍五入到最接近的百分之一。

4

2 回答 2

0

我不知道动作脚本,但我认为你想要:

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 与这些值。

于 2011-03-24T14:30:26.487 回答
0
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

做到了,感谢本杰明的帮助。

于 2011-03-30T10:48:39.693 回答