1

我的问题是我不知道如何对大量数字求和(如“172839023498234792834798237494”或“-172839023498234792834798237494”)。所以我做char* m_value了我将存储这种对象的地方。现在我想做的是做一些基本的算术运算。我应该先转换它还是使用类似的东西itoa?在我的情况下,除了 char* 之外没有其他选项来存储数字。

主文件

int main(int argc, char *argv[])
{
    LargeNumber l1;
    LargeNumber l3("172839023498234792834798237494"); 
    LargeNumber l7("-172839023498234792834798237494"); 

    l1 = l3 + l7;  //How to do it ?

    return 0;
}

大数.h

class LargeNumber{

      public:
      LargeNumber(char* value):m_value(value)
      {}

      LargeNumber operator+(const LargeNumber&);
      private:
      char* m_value;
}

大数.cpp

LargeNumber LargeNumber ::operator+(const LargeNumber &b)
{
        return LargeNumber ( ... );  //Sum both LargeNumber ???
}
4

3 回答 3

4

您将需要使用大量的算术库。GMP是一个不错的选择。您的处理器本身无法对这种大小的数字执行操作,因此这些库在软件中为您处理所有老式数学。

于 2012-05-23T17:48:52.623 回答
3

不要重新发明,你应该使用BigInteger库。

无论如何,C 字符串并不是最好的方法。

于 2012-05-23T17:50:13.953 回答
1

我不使用字符串,而是将其作为 int(或 long)数组来执行。运算符的算法将与您手动执行的操作差不多。

于 2012-05-23T17:51:49.103 回答