Google对小数部分进行递归ROUND

时间:2018-09-30 12:30:26

标签: google-sheets

我有一个带小数的数字,但是Google表格的ROUND函数仅适用于places参数中指定的第一个数字:

  1. 1.48852 => ROUND(1.48852)=> 1
  2. 1.48852 => ROUND(ROUND(ROUND(ROUND(ROUND(ROUND(1.48852,5),4),3),2),1),0)=> 2

Google工作表中是否有任何功能可以如第二种情况所示? 基本上,我想要ROUND之类的东西,但是需要递归地工作。

1 个答案:

答案 0 :(得分:0)

要直接回答您的问题,不,我不认为有任何函数可以启用递归舍入(或对此问题进行递归运算)。

但是,与您在问这个问题时所表现出的好奇心一样,我研究了如何通过脚本实现递归结果。这就是结果。

function reround(input) {
  var num1 = 5;
  do {
    input = input.toFixed(num1); 
    input=+input;
    num1--;
  }while (num1 >-1); // continue running the loop while is greater than -1, i.e. until num1 = 0
 return input;

}

此代码将作为脚本输入,然后可以在电子表格中使用该功能。它只需要一个参数(值),因为位置数已编码到脚本中。但毫无疑问,人们可以修改代码以接受小数位数作为参数(我不是好奇;)。


ROUND function

这是常规和递归舍入的每个阶段的值顺序。


REROUND Function

这是REROUND流程中的值的日志。
有趣的是要注意小数点后三位的差异。我没有探索过这个东西,所以没有解释。