Comments 7
Умножаем на -1, не лучший ход. Может abs?
Ну так нам надо отрицательное число получить (если заметили знак минуса), а не его абсолютную, положительную величину. Можно, конечно, вместо умножения сделать инверсию битов, и прибавить единицу, например так: num = ~num + 1;
я по тексту понял что из отрицательного получают положительное. если так, то таких кодеров гнать. умножение, да еще и отрицательных чисел очень затратная операция, как по процу так и по времени. а потом удивляемся, чего это все тормозит.
На самом деле задача такая: если число положительное, то положительным оно и останется. Если оно отрицательное, то полученное из строки число надо сделать отрицательным (т.к. метод parseNumber(str, base) не учитывает знак числа). Самый простой способ сделать это прилепить if в конце (что-то вроде):
if (sign < 0)
result = -result;
Уже исправил в коде.
Непонятен юзкейс перевода не десятиных чисел в дабл. То, что приходится время от времени переводить из строк числа разных систем счисления в целочисленные типы это да, а вот в число с плавающей точкой, зачем? Есть какой-нибудь пример, откуда оно такое может прийти?
Надеюсь, искренне надеюсь, что это не для собеседований.
Преобразуем строки в числа в разных системах счисления