Scientific notation is the way that scientists easily handle very large numbers or very small numbers. The notation matches the regular expression [+-][1-9].[0-9]+E[+-][0-9]+ which means that the integer portion has exactly one digit, there is at least one digit in the fractional portion, and the number and its exponent's signs are always provided even when they are positive.

Now given a real number A in scientific notation, you are supposed to print A in the conventional notation while keeping all the significant figures.

Input Specification:
Each input contains one test case. For each case, there is one line containing the real number A in scientific notation. The number is no more than 9999 bytes in length and the exponent's absolute value is no more than 9999.

Output Specification:
For each test case, print in one line the input number A in the conventional notation, with all the significant figures kept, including trailing zeros.

Sample Input 1:

+1.23400E-03


Sample Output 1:

0.00123400

Sample Input 2:

-1.2E+10

Sample Output 2:

-12000000000

我的解法:

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
    string s;
    cin >> s;
    if(s[0] == '-')
        cout << "-";
    int n,i;
    for(i = 1; s[i] != 'E'; i++);
    string t = s.substr(1,i-1);
    n = stoi(s.substr(i+1));
    if(n < 0)
    {
        cout << "0.";
        for(int j = 0; j < abs(n)-1; j++)
            cout << "0";
        for(int j = 0; j < t.length(); j++)
        {
            if(t[j] != '.')
                cout << t[j];
        }
    }
    else{
        if(n >= t.length()-2)
        {
            for(int j = 0; j < t.length(); j++)
            {
                if( t[j] != '.')
                    cout << t[j];
            }
            for(int j=0 ;j < n-t.length()+2; j++)
            {
                cout << "0";
            }
        }
        else{
         for(int j = 0; j<n+2; j++)
         {
             if(t[j] != '.')
                 cout << t[j];
         }
         cout << ".";
         for(int j= n+2; j < t.length(); j++)
            cout << t[j];
        }
    }
    return 0;
}

柳婼的解法:

#include <iostream>
using namespace std;
int main() {
 string s;
 cin >> s;
 int i = 0;
 while (s[i] != 'E') i++;
 string t = s.substr(1, i-1);
 int n = stoi(s.substr(i+1));
 if (s[0] == '-') cout << "-";
 if (n < 0) {
        cout << "0.";
         for (int j = 0; j < abs(n) - 1; j++) cout << '0';
         for (int j = 0; j < t.length(); j++)
         if (t[j] != '.') cout << t[j];
 }
 else {
        cout << t[0];
         int cnt, j;
         for (j = 2, cnt = 0; j < t.length() && cnt < n; j++, cnt++) cout <<
t[j];
        if (j == t.length()) {
                for (int k = 0; k < n - cnt; k++) cout << '0';
        }
        else {
                cout << '.';
                 for (int k = j; k < t.length(); k++) cout << t[k];
        }
 }
 return 0;
}

最新文章

  1. obj转json
  2. flexbox简介
  3. #一周五# win10通用平台,无处不在的Xamarin,msbuild开源,MVP卢建晖的Asp.NET 5系列 (视频)
  4. viso2010从mysql中导出ER图
  5. IOS UI segmentedControl UISegmentedControl 常见属性和用法
  6. 想在BD自然排名中脱颖而出吗?加张合适的图片吧!
  7. css和jQuery ,字符串中重新定义单个字符样式背景
  8. 近期刷题的c语言总结。
  9. (&quot; use strict&quot;)Javascript 严格模式详解
  10. poj 3211 Washing Clothes(背包)
  11. 红帽 Red Hat Linux相关产品iso镜像下载【百度云】(转载)
  12. serialize()与serializeArray()
  13. 规范开发目录 及 webpack多环境打包文件配置
  14. BottomNavigationBarItem fixed
  15. 欢迎访问新博客(pfzheng.tech)
  16. BZOJ 4159 [Neerc2009]Business Center
  17. Jmeter分布测试
  18. 2018上IEC计算机高级语言(C)作业 第0次作业
  19. fzu 2132 LQX的作业
  20. C语言的一道数组题Plus

热门文章

  1. Bootstrap 侧边栏 导航栏
  2. 简单javascript学习总结
  3. javaBean命名属性时的小注意点
  4. C#获取刚插入的数据的id
  5. springboot - 映射HTTP Response Status Codes 到 静态 HTML页面
  6. OpenCV学习日志:计算机视觉资源汇总
  7. ES6模块化深入 debug
  8. Linux每日练习-crontab
  9. 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ
  10. 读写锁ReentrantReadWriteLock源代码浅析