将特定的Excel公式转换为Javascript

Convert specific Excel formula to Javascript

本文关键字:转换 Javascript Excel      更新时间:2023-09-26

我正在尝试将此特定公式从 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匹配。

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

  • 0 在数学上近似于最接近的整数。
  • 正数 (n) 将使用最多的 n 个有效数字近似 - 即。舍入(1.23456, 3) = 1,235
  • 负数 (-n) 将近似于第一个有效整数数字,然后添加"0"作为其余部分的填充 - 即。舍入(1.23456, -1) = 0, 舍入(12.3456, -1) = 10, 舍入(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);

我认为 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 函数。
  • 要始终向下舍入
  • (朝零),请使用向下舍入函数。
  • 若要将数字舍入为特定的倍数(例如,舍入到最接近的 0.5),请使用 MROUND 函数。