Операции + и - в конструкторе имеют разную логику (wtf)?
-
Создаю переменную и в значении выбираю конструктор выражений, там создаю такую конструкцию:
a) ((([[VAR1]]).split("0.").join("")) - ([[VAR2]]))
где var1=0.00001000 и var2=300
получаю в результате 700
ОК!б) ((([[VAR1]]).split("0.").join("")) + ([[VAR2]]))
те же значения
получаю 00001000300
WTF!Это баг или фича? Если фича, то зачем и как нормально решить мою задачу?
-
@Antonio нужно преобразовать в число.
parseInt(((([[VAR1]]).split("0.").join(""))) + parseInt([[VAR2]])
-
@DrPrime не работает так, пишет SyntaxError.
Понятно, что складывается как строки, а вычитается как числа. Главный вопрос - почему такая разница между + и - ? Это скорее к автору, если это не только у меня так работает.
Но и за решение буду благодарен.
-
@Antonio скорее всего это особенность js при работе с оператором
-
parseInt(([[VAR1]].split("0.")).join("")) + parseInt([[VAR2]])
- там лишние скобки были от конструктора, убрал, вот так должно работать
-
@DrPrime, не мог понять, что вообще происходит и почему это выражение выдает какой-то странный ответ. Оказалось, что parseInt([[VAR1]]) при var1=00002000 (это после обрезки "0." спереди) превращается в "1". Т.е. в значение по умолчанию, когда переключаешь тип на int.
-
В общем нашел два решения:
Либо через "Выполнить код"
var a1 = [[VAR1]]; var b1 = 0.00000300; // вместо 0.00000300 тоже может быть переменная из Баса var c1 = Number(a1)+Number(b1); [[RESULT]] = Number(c1); // сохраняем сумму в переменную result и дальше в Басе с ней работаем
Либо сложить вычитанием в конструкторе ¯\_ (ツ)_/¯
([[[VAR1]]) - (-0.00000300)
Профит.
-
@Antonio said in Операции + и - в конструкторе имеют разную логику (wtf)?:
Главный вопрос - почему такая разница между + и - ? Это скорее к автору, если это не только у меня так работает.
Тут достаточно все достаточно логично,
строка + строка = строка,
строка - строка = числоНо это поведение js, я не имею к этому отношения.
Если интересно, то вот еще много забавного https://gist.github.com/MichalZalecki/c964192f830360ce6361
-
@Antonio Вот ваш случай https://gist.github.com/MichalZalecki/c964192f830360ce6361#gistcomment-2111991