作者:嗒嗒爱臭臭 | 来源:互联网 | 2023-10-11 15:42
作者:柳婼
来源:CSDN
原文:https://blog.csdn.net/liuchuo/article/details/52121350
参考这位大佬实现的&#xff0c;具体思路是用num保存E前面的字符串所对应的数字&#xff0c;exp保存E后面的字符串&#xff0c;不包括符号位。当exp<0时表示小数点向前移动&#xff0c;那么先输出0. 然后输出abs(exp)-1个0&#xff0c;然后继续输出num中的所有数字&#xff1b;当exp>0时候表示向后移动&#xff0c;那么先输出第一个字符&#xff0c;然后将num中尽可能输出n个字符&#xff0c;如果num已经输出到最后一个字符(j &#61;&#61; num.length())那么就在后面补exp-cnt个0&#xff0c;否则就补充一个小数点。 然后继续输出t剩余的没有输出的字符&#xff5e;
#include <iostream>
#include <string>
#include <cstring>using namespace std;int abs(int x)
{return x < 0 ? -x:x;
}int main()
{string str;while(cin >> str){int k &#61; str.find(&#39;E&#39;);string num &#61; str.substr(1, k-1); int exp &#61; stoi(str.substr(k&#43;1)); if(str[0] &#61;&#61; &#39;-&#39;)cout << str[0];if(exp < 0) {cout << "0.";for(int i &#61; 0; i < abs(exp)-1; i&#43;&#43;)cout << &#39;0&#39;;for(int i &#61; 0; i < num.size(); i&#43;&#43;)if(num[i] !&#61; &#39;.&#39;)cout << num[i];}else{cout << num[0];int i &#61; 2, cnt &#61; 0;for(; i < num.size() && cnt < exp; i&#43;&#43;, cnt&#43;&#43;)cout << num[i];if(i &#61;&#61; num.size())for(int j &#61; 0; j < exp-cnt; j&#43;&#43;)cout << &#39;0&#39;;else