Один и тот же объем кода работает по-разному с разными номерами данных - PullRequest
0 голосов
/ 05 апреля 2019

Я создаю проект с моделью 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

Я также создал кнопку «Тест» для удобства использования. Ниже вы можете увидеть код. Он также находится в файле электронной таблицы.

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 голосов
/ 06 апреля 2019

Я нашел свое решение для сравнения не только значений, но и значений с преобразованием parseFloat + toFixed (2).Я имею в виду if (parseFloat(test.getRange(i, j).getValue().toFixed(2)) == test.getRange(a, b+2).getValue()); Но я полностью согласен, что массивы данных были бы здесь более подходящими.Спасибо всем за помощь в любом случае!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...