#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.»