2011-12-09 122 views
1

我试图做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 

编辑:拼写错误

+0

我不确定实际问题是什么。请提出问题,以便可以回答。 (例如,“当我尝试使用'.setf(ios :: fixed)'时出现这些错误/这个结果。”为什么是这样?) –

+0

我想更改数字的科学记数法到十进制记数法,但这种变化没有像我期望的那样发生。它保持为科学记数法。 – zoite

+0

我仍然没有看到明确的问题。我不是故意挑剔的,但对你来说,一个建议是,本网站上的很多人认为问题是非常重要的。我看到你已经接受了这个问题的答案,所以这一切都很好。 :-)但值得警惕的是:问题有时会减少。我确实相信一个问题也可能因为“不是真正的问题”而关闭。很高兴听到你的问题解决了!保重! :-) –

回答

3

变量powanswerfloat,但是您想将其打印为integer

如何像:

int powanswer_int = (int) powanswer; 
cout << FIRST << "^" << SECOND << " = " << powanswer_int << " => "; 

,并使用powanswer_int后也是如此。

+0

我实际上已经把它作为一个int以前的版本,但将它改为浮动以进行测试,但忘记将其更改回来。但使用(int)powanswer解决了这个问题。谢谢! – zoite

相关问题