我的问题是我不知道如何总结大数(如“172839023498234792834798237494”或“-172839023498234792834798237494”)。所以我做了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 ???
}
答案 0 :(得分:4)
您需要使用大量算术库。 GMP是个不错的选择。您的处理器无法对此大小的数字进行原生操作,因此这些库会在软件中为您处理所有旧式数学运算。
答案 1 :(得分:3)
不要重新发明轮子,你应该使用BigInteger库。
无论如何,C字符串不是最好的方法。
答案 2 :(得分:1)
我不是使用字符串,而是将其作为int(或long)数组。操作员的算法就是你手工做的事情。