Математика с очень большими числами с использованием строк

#c# #string #math #numbers

#c# #строка #математика #числа

Вопрос:

Я пытаюсь использовать строки для выполнения математики с очень большими числами с использованием строк и без внешних библиотек.

Я безуспешно пытался искать в Интернете, и мне нужны функции для сложения, вычитания, умножения и деления (если это возможно, и ограничено указанным количеством знаков после запятой).

пример: добавьте 9,900,000,000 и 100,000,020 должно быть 10,000,000,020.

РЕДАКТИРОВАТЬ: Извините, я не был достаточно конкретен, но я могу использовать только строки. никаких Long, bigInt, чего угодно. просто базовая строка и, если необходимо, int32.

Это НЕ вопрос домашнего задания!

Комментарии:

1. Int64 сделает это. Вам даже не нужно «большое число».

2. and limited to a specified number of decimal places. вам вообще нужна поддержка десятичных дробей? В противном случае long и BigInteger отсутствуют.

3. Почему вы отвергаете BigInt? «Привет, у меня проблема, и объект X был разработан именно для решения этой проблемы. Как я могу решить проблему без использования X?»

4. @RaymondChen: Вероятно, это проблема с домашним заданием. lpquarx: Это проблема с домашним заданием? Если да, объясните, что вы пробовали до сих пор и где вы застряли. Можете ли вы решить проблему в строках, чтобы выполнить, скажем, сложение двузначных чисел?

5. Указанные вами ограничения необычны в реальной среде. Возможно, люди были бы более склонны помогать, если бы понимали, почему вы не можете использовать BigInteger в этом контексте.

Ответ №1:

Вы смотрели на BigInteger?

Ответ №2:

Если вы используете .NET Framework 4, вы можете использовать новый System.Numerics.BigInteger класс, который представляет собой целое число, которое может содержать вообще любое целое число, пока у вас не закончится память.

(Приведенные вами примеры, кстати, могут быть вычислены с использованием long или System.UInt64 .)

Ответ №3:

Сначала вы должны преобразовать значение в битах, а затем применить операцию, которую вы хотите. После выполнения операции вы должны преобразовать биты обратно в число.

Комментарии:

1. Вы говорите о преобразовании в строку битов? Потому что «я могу использовать только строки. никаких Long, bigInt, чего угодно. просто базовая строка и, если необходимо, int32.»