Умножение больших чисел не используя встроенные библиотеки и знак "*"
Не понимаю как избежать ошибки большого числа. Код рабочий, но не умножает огромные числа. А это необходимо. Использовать библиотеки запрещено. Можно только + и -. Math, decimal тоже нельзя. Вот код:
class Multiply:
@staticmethod
def _multiply_numbers(a, b):
result = 0
while b:
if b & 1:
result += a
a <<= 1
b >>= 1
return result
@staticmethod
def insert_decimal_point(number, position):
str_number = list(str(number))
str_number.insert(-position, '.')
result = ''.join(str_number)
return result
@staticmethod
def multiply(x, y):
decimal_x, decimal_y = str(x).split('.'), str(y).split('.')
print(decimal_x, decimal_y)
count_decimal = len(decimal_x[1]) + len(decimal_y[1])
x, y = int(''.join(decimal_x)), int(''.join(decimal_y))
print(x, y)
multiplied_result = Multiply._multiply_numbers(x, y)
result = Multiply.insert_decimal_point(multiplied_result, count_decimal)
return result
Ошибка при вводе: x = 123456789456321456987 и y = 12:
File "C:\Users\Анастасия\Desktop\Projects\calc_test\main.py", line 68, in <module>
calculator_app.run()
File "C:\Users\Анастасия\Desktop\Projects\calc_test\main.py", line 49, in run
print(f'Результат умножения: {self.multiply_obj.multiply(number_1, number_2)}')
File "C:\Users\Анастасия\Desktop\Projects\calc_test\pkg\multiply.py", line 24, in multiply
x, y = int(''.join(decimal_x)), int(''.join(decimal_y))
ValueError: invalid literal for int() with base 10: '12345678945632146e+20'