Не увеличивает переменную



  • Почему-то не правильно считается переменная при "увеличить переменную".
    Делаю парс строки (через username), получаю число, сохраняю в переменную,увеличиваю эту переменную на 40 и добавляю значение в список.
    Почему-то часть значений увеличивается нормально, а часть нет, вместо прибавки 40 присваивается 40, хотя после парса в переменной было число не 0 (на скрине в верху числа 09,10,18
    40 прибавляется только к последним двум)
    Значение переменной стоит expression, менял на string также выборочно прибавляет, что не так не пойму, может кто подскажет?)

    0a154536-dcff-4b45-9577-e589d99bd767-image.png

    b55aa7b8-aac3-4427-b259-1bfd59c1f749-image.png



  • заметил, что не увеличиваются первоначальные значения 08, 09, остальные все увеличиваются



  • @Alex7_7 у вас там не числа, а строки



  • @DrPrime , как из них сделать число, чтобы считалось? Большинство значений считаются, только некоторые не складываются.
    Первоначально до парса значение выглядит так 09:52, это же число



  • Кто-нибудь сталкивался с таким вопросом? Есть решение?



  • @Alex7_7 said in Не увеличивает переменную:

    Кто-нибудь сталкивался с таким вопросом? Есть решение?

    Почитайте о типах данных https://learn.javascript.ru/data-types



  • Пробовал прибавление через parseInt([[USERNAME]])+40 , все равно к значениям 08,09 не прибавляет 40, заменяет их на 40, ко всем остальным нормально прибавляет (к 02,03,05,07 т др)

    cc782b9b-3b75-4db6-a3ed-031542516fba-image.png



  • @UserTrue так и делаю через parseInt([[USERNAME]]), но если значение 08 или 09, то читает только 0 и присваивает значению 0, а надо 8. Остальные значения (02,07 и др) как надо читает.
    Как правильно написать, чтобы читало 08, чтобы получить 8?)



  • @Alex7_7 значит у вас какая-то ошибка закралась должно также работать как и в других случаях. parseInt('08') + 40



  • Может в самом BAS глюк?

    Остальные все значения нормально считает, делал еще проверку на пробел ([[USERNAME]] = [[USERNAME]].trim(), все равно значениям 08 и 09 при прибавлении присваивает 0

    Сделал "дедовским" способом, через if и присвоение переменной (если знач строки 08, то присвоить число 8), работает, но как-то не так хотелось))
    f98e2a85-9ec3-49d1-a3aa-117e04216e25-image.png



  • Приходит мысль попробовать через "убрать" 0, если он есть в первом элементе значения (08 убрать 0 оставить 8 и тд), кто подскажет как через регулярку какой командой это правильно сделать? просто /d+ не подойдет, пробовал



  • @Alex7_7

    Может в самом BAS глюк?

    Не думаю



  • @UserTrue не знаю в чем может быть ошибка, только два значения 08 и 09 неправильно считаются, все остальные правильно, значения первоначально получаются одинаковым способом, пишутся в список вот так 02:29,04:04,07:54,13:55,15:06,17:28,00:56,02:08,19:31,09:26,14:55,18:30
    потом через foreach делается парс первого элемента списка с удалением его из списка, берется первая часть значения до :
    к нему идет прибавления числа 20 или 40
    каких-либо сравнений в логике нет, все одинаково для всех значений
    теоритически в логике ошибки быть не может, почему 08 и 09 считаются не верно - хз)



  • @Alex7_7 попробуйте в parseInt указать систему исчисление parseInt('08', 10)



  • @Alex7_7 Как то тоже были непонятности с увеличением переменной, я тогда перед увеличением числа умножал его на 1 и потом увеличивал. Странно но тогда всё начинало работать. Удалить ноль ([[NEW_VARIABLE]]).split(0).join("") или регулярка 0(\d+)



  • @Alex7_7 said in Не увеличивает переменную:

    Может в самом BAS глюк?

    Остальные все значения нормально считает, делал еще проверку на пробел ([[USERNAME]] = [[USERNAME]].trim(), все равно значениям 08 и 09 при прибавлении присваивает 0

    Сделал "дедовским" способом, через if и присвоение переменной (если знач строки 08, то присвоить число 8), работает, но как-то не так хотелось))

    На будущее, любую проблему можно решить в разы быстрее, если вы приложите тестовый скрипт. Приложите тестовый скрипт, ошибка скорее всего простая, например в строке "08" между цифрами затесался ещё какой нибудь символ, по этому parseInt() и возвращает 0



  • @Fox Нет, просто если не указать систему исчисления, то она будет определяться автоматически. В старых движках, если строка с начинается с '0' то это восьмеричная система.



  • @UserTrue said in Не увеличивает переменную:

    @Fox Нет, просто если не указать систему исчисления, то она будет определяться автоматически. В старых движках, если строка с начинается с '0' то это восьмеричная система.

    хм, слушай ты прав
    https://stackoverflow.com/questions/12318830/parseint08-returns-0
    890c0b0f-adcb-472d-a248-990146d60775-изображение.png
    ни разу с этим не сталкивался просто :D



  • @Fox said in Не увеличивает переменную:

    ни разу с этим не сталкивался просто :D

    Я тоже, но потом я вспомнил, что что-то читал про это в дока и перечитал еще раз ))

    Хотя это не поощряется в спецификацией ECMAScript 3 и запрещено в ECMAScript 5, многие реализации интерпретируют числовую строку, начинающуюся с 0, как восьмеричную. Следующий пример может иметь как восьмеричный, так и десятичный результат. Чтобы избежать непредвиденного результата, всегда указывайте основание системы счисления.

    parseInt("0e0"); // 0
    parseInt("08"); // 0, '8' не является цифрой в восьмеричной системе.
    


  • @T-A-0 Спасибо!! Респект всем, кто не прошел мимо!!)
    Оставил пока реализацию через переменную
    Оказалось не глюк, так устроена система исчисления)
    c953ed29-ec9e-4026-bd3e-d89c98788478-image.png


Log in to reply