码迷,mamicode.com
首页 > 其他好文 > 详细

科学计数法1

时间:2020-05-03 20:21:34      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:==   print   bsp   ret   pac   else   http   传统   alt   

科学记数法是科学家容易处理非常大或非常小的数字的方法。该符号与正则表达式[+-][1-9].[0-9]+E[+-][0-9]+匹配,这意味着整数部分只有一个数字,小数部分至少有一个数字,并且即使数字及其指数符号为正,也始终提供数字及其指数符号。
现在给定一个实数a,在科学记数法中,你应该在传统记数法中打印a,同时保留所有有效数字。
输入规格:
每个输入包含一个测试用例。对于每种情况,在科学记数法中都有一行包含实数A。数字长度不超过9999字节,指数的绝对值不超过9999。
输出规格:
对于每个测试用例,在一行中用传统符号打印输入数字A,保留所有有效数字,包括尾随的零

 

技术图片

 

+ 0.0012E+2

000.12

#include <iostream>
using namespace std;
int main(){
    string s, left;
    int rig;
    cin >> s;
    if (s[0] == -) printf("-");
    for (int i = 0; i < s.size(); i++){
        if (s[i] == E){
            left = s.substr(1, i - 1);
            rig = stoi(s.substr(i + 1));
            break;
        }
    }

    if (rig < 0){
        printf("0.");
        for (int i = 0; i < abs(rig) - 1; i ++) printf("0");
        for (int i = 0; i < left.size(); i++)
            if (left[i] != .)     printf("%c", left[i]);
    }else {
        printf("%c", left[0]);
        int i, cnt;
        for (i = 2, cnt = 0; i < left.size() && cnt < rig; i++, cnt++)
            printf("%c", left[i]);
        if (i == left.size())
            while (cnt++ < rig)     printf("0");
        else {
            printf(".");
            while (i < left.size())
                printf("%c", left[i++]);
        }
    }
    return 0;
}

 

科学计数法1

标签:==   print   bsp   ret   pac   else   http   传统   alt   

原文地址:https://www.cnblogs.com/tingtin/p/12822848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!