将特定的Excel公式转换为Javascript

时间:2015-01-13 11:41:52

标签: javascript excel rounding

我正在尝试将此特定公式从Excel电子表格转换为Javascript

ROUND(-E10*(E21-E11)*E13/100,-1)

这就是我现在在Javascript中的内容

Math.round(-$scope.E10 * ($scope.E21 - $scope.E11 ) * $scope.E13 / 100);

这给了我一个不同的值,问题是Excel汇总数字的方式,因为Excel公式末尾的,-1我不明白,在任何excel中找不到它手册。

有人可以通过解释Excel圆函数中的,-1实际执行的操作来帮助我吗?

我在计算过程中使用的值是

E10 = 11000

E11 = 5.2

E13 = 1.40

E21 = 4.8

我的Javascript和Excel工作表中的值完全相同。 Excel中的结果为60,而我的Javascript返回61.如果我将,-1更改为,1,则Excel中的计算与Javascript中的计算相匹配,但我需要执行相反操作并将我的Javascript与Excel中。

2 个答案:

答案 0 :(得分:1)

第二个参数(在您的示例中为-1)指定ROUND函数在近似值上使用多少位数。

  • 0将在数学上近似为最接近的整数。
  • 正数(n)将近似使用最多n个有效数字 - 即。 ROUND(1.23456,3)= 1,235
  • 负数(-n)将近似于第一个有效整数位,然后添加" 0"作为填充其余部分 - 即。 ROUND(1.23456,-1)= 0,ROUND(12.3456,-1)= 10,ROUND(123456.7,-4)= 123500

在js中,Excel回合看起来像这样:

function excelRound(val, num) {
    var coef = Math.pow(10, num);
    return (Math.round(val * coef))/coef
}

excelRound(-$scope.E10 * ($scope.E21 - $scope.E11 ) * $scope.E13 / 100, -1);

答案 1 :(得分:0)

我认为http://office.microsoft.com/en-001/excel-help/round-function-HP010342858.aspx可以帮助您回答问题。

ROUND(number, num_digits)

  • 如果num_digits大于0(零),则将数字四舍五入到指定的小数位数。
  • 如果num_digits为0,则将数字四舍五入为最接近的整数。
  • 如果num_digits小于0,则该数字将四舍五入到小数点的左侧。
  • 要始终向上舍入(远离零),请使用ROUNDUP函数。
  • 要始终向下舍入(向零),请使用ROUNDDOWN函数。
  • 要将数字舍入到特定倍数(例如,舍入到最接近的0.5),请使用MROUND函数。