我试图做http://www.cstutoringcenter.com/problems/problems.php?id=2的挑战,我有问题,科学记数法转换为十进制,我需要加在一起指数:转换科学记数法十进制
这里是我到目前为止的代码:
#define FIRST 2
#define SECOND 20
#include <iostream>
#include <cmath>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
// Give variables initial setting
int total = 0;
float powanswer = 0;
// Get rid of scientific notation for large numbers
stringstream ss;
ss.setf(ios::fixed);
ss << pow(FIRST,SECOND);
ss >> powanswer;
// Output
// Expected: 2^20 = 1048576 => 1+0+4+8+5+7+6 => 31
// Outcome: 2^20 = 1.04858e+06 => 1+.+0+4+8+5+8+e+++0+6 => 32
cout << FIRST << "^" << SECOND << " = " << powanswer << " => ";
// Convert power int to string
string ResultText = "";
stringstream convert;
convert << powanswer;
ResultText = convert.str();
// Loop over total
for (int x=0; x<ResultText.size(); x++)
{
// Convert character to integer
int ResultNum = 0;
stringstream convert;
convert << ResultText[x];
convert >> ResultNum;
total+=ResultNum;
// Output
cout << ResultText[x];
ResultText.size()-1 == x ? cout << " => " : cout << "+";
}
cout << total << endl;
return 0;
}
我试图就如何转换它到处寻找,并且我读我可以使用< <固定在流或.setf(IOS ::固定)< <但既不似乎工作对我而言,我不确定我做错了什么。
标示代码,这里是电流输出:
2^20 = 1.04858e+06 => 1+.+0+4+8+5+8+e+++0+6 => 32
我想要什么,并期望看到的是:
2^20 = 1048576 => 1+0+4+8+5+7+6 => 31
编辑:拼写错误
我不确定实际问题是什么。请提出问题,以便可以回答。 (例如,“当我尝试使用'.setf(ios :: fixed)'时出现这些错误/这个结果。”为什么是这样?) –
我想更改数字的科学记数法到十进制记数法,但这种变化没有像我期望的那样发生。它保持为科学记数法。 – zoite
我仍然没有看到明确的问题。我不是故意挑剔的,但对你来说,一个建议是,本网站上的很多人认为问题是非常重要的。我看到你已经接受了这个问题的答案,所以这一切都很好。 :-)但值得警惕的是:问题有时会减少。我确实相信一个问题也可能因为“不是真正的问题”而关闭。很高兴听到你的问题解决了!保重! :-) –