我正在尝试将公式从数字(Mac OS 10)移植到javascript,因此原始公式是:
(1-(1+(C37÷100)÷C39)^ - C45)÷((C37÷100)÷C39)
我写了这个:
var calcValueOne = (1 - (1 + (yield/100) / coupon_frequency) Math.sqrt() - coupons_until_maturity) / ( (yield/100) / coupon_frequency);
其中yield
= C37且coupon_frequency
= C39且coupons_until_maturity
= C45
我收到以下错误:
SyntaxError:意外的标识符'Math'。期待')'结束 复合表达。
我的数学不热,将其转换为Javascript对我来说是一个巨大的挑战,任何人都可以发布一个解决方案吗?
修改
@Musa善意地添加了一个回复,但是它返回的数字并不是我所期望的,所以我想我会扩展这些值,看看是否有帮助。
yield (C37) == 9.89
coupon_frequency (C39) == 4.00
coupons_until_maturity (C45) == 15.00
我期待的号码是12.41
,但我得到-607.1703544847592
javascript现在看起来像这样:
var calcValueOne = (1 - Math.sqrt(1 + (yield/100) / coupon_frequency) - coupons_until_maturity) / ( (yield/100) / coupon_frequency);
再次为清楚起见,这是原始(excel /数字)公式:
答案 0 :(得分:1)
^符号是指数函数而不是平方根,因此使用Math.pow
来计算它
var yield = 9.89;
var coupon_frequency= 4.00;
var coupons_until_maturity = 15.00
var calcValueOne = (1 - Math.pow((1 + (yield/100) / coupon_frequency), - coupons_until_maturity)) / ( (yield/100) / coupon_frequency);
document.body.innerHTML = calcValueOne;