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

Поддержка
  • Приходит мысль попробовать через "убрать" 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

  • @Alex7_7 Тоже столкнулся с этим. Помогло вставлять блок JS кода:

    [[MONTH]] = Number ([[MONTH]])
    

    Он правильно переводит в число строки "08" и "09".

  • 0 Votes
    5 Posts
    668 Views
  • 0 Votes
    5 Posts
    1065 Views
  • 0 Votes
    14 Posts
    3475 Views
  • 0 Votes
    3 Posts
    1064 Views
  • 0 Votes
    2 Posts
    1990 Views