我試圖做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
我仍然沒有看到明確的問題。我不是故意挑剔的,但對你來說,一個建議是,本網站上的很多人認爲問題是非常重要的。我看到你已經接受了這個問題的答案,所以這一切都很好。 :-)但值得警惕的是:問題有時會減少。我確實相信一個問題也可能因爲「不是真正的問題」而關閉。很高興聽到你的問題解決了!保重! :-) –