【问题标题】:Convert specific Excel formula to Javascript将特定的 Excel 公式转换为 Javascript
【发布时间】:2015-01-13 11:41:52
【问题描述】:

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

【问题讨论】:

  • 没有答案,但 excel 文档明确说明了它的作用:office.microsoft.com/en-gb/excel-help/…
  • to whit:“如果 num_digits 小于 0,则 number 舍入到小数点左侧。”例如使用 -1 时的 21.5 舍入为 20。

标签: javascript excel rounding


【解决方案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);

【讨论】:

    【解决方案2】:

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

    ROUND(number, num_digits)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 2017-08-29
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多