2011-12-09 173 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

相關問題