zoukankan      html  css  js  c++  java
  • 科学计数法1

    科学记数法是科学家容易处理非常大或非常小的数字的方法。该符号与正则表达式[+-][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;
    }
  • 相关阅读:
    006开源O/R映射框架内容回顾
    005---query接口初步
    004---持久对象的生命周期介绍
    C++中计算矩阵的行列式
    异面直线判定
    华夏万家不投资最佳激活顺序
    飞行目标定位测量相关文献记录
    程序运行缺少MSVCR110.dll
    C++中的return返回值:return0 or return -1?
    办宽带
  • 原文地址:https://www.cnblogs.com/tingtin/p/12822848.html
Copyright © 2011-2022 走看看