加减大数

Adding and deducting big numbers

本文关键字:      更新时间:2023-10-16

你能帮我买展示如何创建两个长数的减法吗?我在互联网上找到了这段代码:

#include<iostream>
#include<string>
using namespace std;
int main(void)
{
// the two "numbers" to be added. Make them as long as you like.
     string numStr1;
     string numStr2;
     cout << "Enter 1st number: "; cin >> numStr1;
     cout << "Enter 2nd number: "; cin >> numStr2;
// keeping track of which string is longest using references
string& rLongStr = numStr1.length() > numStr2.length() ? numStr1 : numStr2;
string& rShortStr = numStr1.length() <= numStr2.length() ? numStr1 : numStr2;
// initialize the sum with the long string but with space for a final carry at the beginning
string numStrSum = '0' + rLongStr;// the '0' in case of a final carry
// must go through the strings backwards since the least
// significant digit is at the end, not the beginning.
string::reverse_iterator r_itShort, r_itSum;
r_itShort = rShortStr.rbegin();// point to last "digit" in the short string
r_itSum = numStrSum.rbegin();// same for sum string
// add the "digits" one by one from end to beginning of the short string
while( r_itShort != rShortStr.rend() )
{
    *r_itSum += *r_itShort - '0';// "add" the digits
    if( *r_itSum > '9' )// must carry a one to the next "digit"
    {
        *(r_itSum + 1) += 1;
        *r_itSum -= 10;
    }
    ++r_itShort;// move back 1 character
    ++r_itSum;// in each string
}
if( numStrSum.at(0) == '0' )// if 1st character is stiil '0'
    numStrSum.erase(0,1);// erase it
// output result
cout << numStrSum;
cout << endl;
return 0;
}

所以,我无法减去这两个数字。我像这样尝试过 smt:

while( r_itShort != rShortStr.rend() )
{
    *r_itSum -= *r_itShort + '0';
    if( *r_itSum > '9' )
    {
        *(r_itSum + 1) -= 1;
        *r_itSum += 10;
    }
    --r_itShort;
    --r_itSum;
}
if( numStrSum.at(0) == '0' )
    numStrSum.erase(0,1);

但它向我展示了同样的情况。你能帮帮我,告诉我我做错了什么吗?谢谢!

您可以使用 cin/cout 将浮点数/双精度/整数类型输入和输出到iostream,因此字符串解析不会有问题。您可以将它们作为双类型获得。

如果你真的想把这些数字作为字符串获取,你可以使用atof将它们转换为浮点数。然后只需计算您需要的内容,然后使用std::to_string或直接打印。

相关文章:
  • 没有找到相关文章