我有这个公式,它使用权力,例如' 10到权力30'
=B2*(B3/12) / (1-(1+(B3/12)) ^ -B6)
问题在于我无法将^
放在JS / jQuery中,我必须使用Math.pow()
作为等价物。
我已经尝试了很多不同的职位,但我似乎无法正确理解,括号真的让我感到困惑。我将公式的哪些部分包裹在.pow
内?
我的尝试:=B2*(B3/12) / Math.pow( (1-(1+(B3/12)) , -B6) )
更新 请参阅此Fiddle
小提琴代码:
var B2 = 500000; //£500,000
var B3 = 2.00; //2.00%
var B6 = 300; //Total number of payments
var original_formula = 'B2*(B3/12)/(1-(1+(B3/12))^-B6)';
var x = B2 * (B3 / 12) / Math.pow(1 - (1 + (B3 / 12)), -B6)
console.log(x);
//Expected/Excel result = 2,119.27
//Actual result = 2.9884337938456618e-229 <- what's going on here?
答案 0 :(得分:2)
没有试过这个,但有一个问题可能就是你用Math.pow()
用括号括起这两个参数。
在原始公式中,将括号中的基数和指数包装在一起:
(1 - (1 + (B3 / 12)) ^ -B6)
Math.pow()
有两个参数,基数和指数:
Math.pow(base, exponent)
你不能在Javascript中的两个参数中使用括号,事实上你不需要,因为pow()
函数知道这两个参数应该一起使用。
所以而不是:
Math.pow((1 - (1 + (B3 / 12)), -B6))
我认为应该更像:
Math.pow(1 - (1 + (B3 / 12)), -B6)
答案 1 :(得分:1)
=B2*(B3/12) / (1-(1+(B3/12)) ^ -B6)
与
相同=B2*B3/12 / ( 1 - (1+B3/12) ^ -B6 )
随着parantheses数量的减少,可能更容易看到javascript实现应该
= B2*B3/12 / ( 1 - Math.pow(1+B3/12, -B6) )
您还需要将B3=2.00%
翻译成B3=2.00/100
或B3=0.02
。然后结果确实是2119.2716932202998
var B2 = 500000; //£500,000
var B3 = 2.00; //2.00%
var B6 = 300; //Total number of payments
var original_formula = 'B2*(B3/12)/(1-(1+(B3/12))^-B6)';
B3 = B3/100 // 2.0% is 0.02 as number
var x = B2*B3/12 / (1 - Math.pow(1 + B3/12, -B6) )
var log = document.getElementById("log")
log.innerHTML += "x="+x;
&#13;
<div id="log"></div>
&#13;