【问题标题】:Excel spreadsheet formula to javascript questionExcel电子表格公式到javascript问题
【发布时间】:2023-03-27 08:36:01
【问题描述】:

大家好,我想知道如何从 Excel 2007 fx 计算这个公式到 javascript:

 =(B12*'ROI endo only'!B5)/(1-(1+Data!B12)^(-Data!B13))

 WHERE
   B12 = 0.49%
   B5  = 99,500
   B13 = 48

到目前为止,我将其作为我的 javascript 代码:

 var theCalc = (0.49 * 99500) / (1 - (1 + 0.49)^(-48));

 alert(theCalc);

虽然,我没有得到电子表格上的正确结果。电子表格的值为 2,332,我从 javascript 代码中得到 -1015.72916...

任何帮助都可以很好地解决我的问题:o)

更新

 var theCalc = (0.0049 * 99500) / (1 - Math.pow((1 + 0.0049), -48));

大卫

【问题讨论】:

  • 如果 B12 是 0.49%,那么您的 javascript 变量不应该是 .0049 (= .49%) 而不是 .49 (= 49%)
  • 将 .49 更改为 0.0049 对您的代码起到了作用,Tommy 但我该如何舍入它,因为答案是 2331.290084493742,它应该是 2,332?

标签: javascript excel excel-2007 excel-formula


【解决方案1】:
<html>
<head>
<title>test</title>
</head>

<body onload="testfun();">

<script type="text/javascript"> 
function testfun(){
    document.getElementById('testRes').innerHTML = (.0049 * 99500) / (1 - Math.pow((1+.0049), -48));
}
</script>

The answer:
<div id="testRes"></div>

结果为 2331.290084493742

【讨论】:

  • 将 .49 更改为 0.0049 对您的代码起到了作用,Tommy 但我该如何舍入它,因为答案是 2331.290084493742,它应该是 2,332?
  • 我认为我们在 Excel 和 JS 之间看到了一点浮点数学/舍入错误。例如,将我的代码更改为: ((.0049 * 99500).toFixed(4) / (1 - Math.pow((1+.0049), -48)).toFixed(4)).toFixed(0 ),结果为 2,332。基本上,使用 toFixed 属性来限制函数每个部分的小数位数,然后使用 .toFixed(0) 返回整数。我认为你在正确的轨道上,只需要看看这些数字你需要多少精度。
【解决方案2】:

我认为问题出在^。在 javascript 中,^ 并不像在 VB 中那样表示指数。您必须改用Math.pow 方法。试试这个 JavaScript:

var theCalc = (0.49 * 99500) / Math.pow( 1 - (1 + 0.49), -48 );

【讨论】:

  • 看他的原始代码,我认为除数应该是 (1 - Math.pow((1+.49), -48)
  • 为您的问题添加了评论并在下方添加了答案。我认为这是大卫提到的组合,使用 Math.pow,以正确的顺序除数并使用 .0049 而不是 .49
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多