我的问题是我不知道如何对大量数字求和(例如“1728390234982347922834798237494”或“-1728390234982347922834798237494”)。因此,我创建了char* m_value来存储此类对象。现在,我要做的是进行一些基本的算术运算。我应该先将其转换还是使用类似itoa的代码?在我的情况下,除了char *之外没有其他选项可以存储数字。

Main.cpp

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

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

    return 0;
}

LargeNumber.h
class LargeNumber{

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

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

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

最佳答案

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

关于c++ - 如何对char *数字求和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10725146/

10-11 15:54