我使用Exchange模型创建一个项目。关于相同的代码如何对不同的数据编号(双精度类型)有不同的功能,存在一个问题。 这是我强调此问题的电子表格。
https://docs.google.com/spreadsheets/d/1zYxdFHdg1GhtSwj_mMB-eH_YD_PavMxuWDOSf-yeT5Q/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之间的随机值),则代码将不会执行其最后一个循环(在代码中被注释为“ //在新表格中传输出价/要价”价格合适”)。 该如何解决?为什么会发生?
答案 0 :(得分:0)
我现在发现我的解决方案不仅可以比较值,还可以比较parseFloat + toFixed(2)转换的值。我的意思是if (parseFloat(test.getRange(i, j).getValue().toFixed(2)) == test.getRange(a, b+2).getValue());
,但我完全同意,数据数组在这里更合适。无论如何,谢谢大家的帮助!