template <class Type>
string MyStack<Type>::binaryToDecimal2(string n)
{
//variable declaration and initialization
string dec = "";
MyStack<string> stk;
for (unsigned int i = 0; i < n.length(); i++)
{
string s = to_string((n[i] - '0') * pow(2, (n.length() - i - 1)));
stk.push(s);
}
while (!stk.isEmptyStack()){
string item;
item = stk.top();
stk.pop();
cout << item << endl;
}
return dec;
}
我如何才能更改 binaryToDecimal2 以便在不丢失数据的情况下成功地将我的字符串加在一起?我试过将要加在一起的元素设为无符号整数,但如果值太大,我得到的值就不正确。
在照片中,您输入一个二进制数,而表示等效十进制数的行是:当我使用整数时。有很多小数的数字是在 while 循环内从我的堆栈中输出的。我如何才能将所有这些数字相加并将它们放入 dec 中以进行输出?
最佳答案
1) 结果是不准确还是完全错误?为了“太大”,数字必须有多大?
我无法运行您的代码,因为它不完整,num
已定义但从未使用过。如果您尝试分配一个大于 2³² 的数字,它当然不能被 num
捕获。
2) std::pow 返回一个 float ,然后将其转换为字符串。执行后
std::string n = "10100";
std::vector<std::string> stk;
for (unsigned int i = 0; i < n.length(); i++)
{
std::string s = std::to_string((n[i] - '0') * std::pow(2, (n.length() - i - 1)));
stk.push_back(s);
}
stk
是
16.000000
0.000000
4.000000
0.000000
0.000000
但我很确定 findSum
期望传递的字符串不包含点。
关于C++:尝试在二进制到十进制转换器中多次将非常大的整数加在一起,而您的输入是字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59260901/