将特定 Excel 公式转换为 Javascript

Convert specific Excel formula to Javascript

我正在尝试将此特定公式从 excel 价差 sheet 转换为 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 sheet 中的值完全相同。 Excel 中的结果是 60,而我的 Javascript returns 中的结果是 61。如果我将 ,-1 更改为 ,1,则 Excel 中的计算与我的匹配在 Javascript 中,但我需要做相反的事情,将我的 Javascript 匹配到 excel。

我认为 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 函数。

第二个参数(在您的示例中为 -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);