相同数量的代码对不同数据编号的工作方式不同

时间:2019-04-05 18:33:48

标签: google-apps-script google-sheets

我使用Exchange模型创建一个项目。关于相同的代码如何对不同的数据编号(双精度类型)有不同的功能,存在一个问题。 这是我强调此问题的电子表格。

https://docs.google.com/spreadsheets/d/1zYxdFHdg1GhtSwj_mMB-eH_YD_PavMxuWDOSf-yeT5Q/edit?usp=sharing

必要时链接代码https://script.google.com/d/10QwXa-RwpoDVQmfx9A_RzWJMcKVzi1hTyfkuIConmg8IIoG09zLrvnsy/edit?usp=sharing

我还为可用性创建了一个“测试”按钮。您可以在下面看到代码。它也在c的电子表格文件中。

function STtest() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var test = ss.getSheetByName("Test");

  var MinD = test.getRange("C23").getValue(); //getting min
  var MaxD = test.getRange("C24").getValue(); // getting max
  var MinMaxRange;
  MinMaxRange = (MaxD - MinD) / 0.01; // range

  var i  = test.getRange("G8").getRow(); 
  var j  = test.getRange("G8").getColumn(); 

  var NewMinD = MinD + 0.01;

  test.getRange("G8").setValue(test.getRange("C23").getValue()); 
  //filling minimum price in new table 

  for (var k = 0 ; k < MinMaxRange-0.002; k++)   //fill all prices in new 
  table
  {  
      test.getRange(i+1, j).setValue(NewMinD);
      NewMinD = NewMinD+0.01;
      i = i + 1;
  }

  var i  = test.getRange("G8").getRow(); // reset index after loop

  var a  = test.getRange("A3").getRow(); 
  var b  = test.getRange("A3").getColumn(); 



  for (var w = 0 ; w < MinMaxRange-0.002; w++) //transporting bid/ask 
  //size in new table with right price
  {  
      if (test.getRange(i, j).getValue() == test.getRange(a,b+2).getValue()) 
      {
           test.getRange(i, j-1).setValue(test.getRange(a, b+1).getValue());
           test.getRange(i, j+1).setValue(test.getRange(a, b+3).getValue());
      }
      i = i + 1;
  } 
};

因此您可以看到在“ C3:C22”范围内是1.90至1.94的随机价格。 如果您将这些价格替换为大于2的范围(例如,尝试插入2.05到2.10之间的随机值),则代码将不会执行其最后一个循环(在代码中被注释为“ //在新表格中传输出价/要价”价格合适”)。 该如何解决?为什么会发生?

1 个答案:

答案 0 :(得分:0)

我现在发现我的解决方案不仅可以比较值,还可以比较parseFloat + toFixed(2)转换的值。我的意思是if (parseFloat(test.getRange(i, j).getValue().toFixed(2)) == test.getRange(a, b+2).getValue());,但我完全同意,数据数组在这里更合适。无论如何,谢谢大家的帮助!