花了半个小时,强行拗出一长串又臭又长的代码,把所有情况都分了(该分的,不该分的……都分了……)

 #include<cstdio>
#include<cstring>
#include<cmath>
#define MAX 120
char num[MAX],d[MAX],b_[],b;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%s",num);
if(num[]=='')
{
int i,cnt;
for(i=,cnt=;;i++,cnt++)
{
if(num[i]=='e') break;
d[cnt]=num[i];
}
d[cnt]='\0';
i++;
for(cnt=;num[i];i++,cnt++) b_[cnt]=num[i];
b_[cnt]='\0';
int len_b=strlen(b_);
b=;
for(i=;i<len_b;i++) b+=(b_[i]-'')*(int)pow(,(len_b--i));
int len_d=strlen(d);
if(len_d== && d[]=='')//这个数是0
{
printf("0\n");
}
else if(b<len_d)//不需要添加后缀0,需要移动小数点,并去掉前缀0
{
int d_0=;
for(i=;i<len_d;i++)
{
if(d[i]!='') break;
if(d[i]=='') d_0++;
}//前缀0个数
if(b<=d_0)//b <= d的前缀0个数,n<1
{
printf("0.");
for(i=b;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else//b > d的前缀0个数,n>=1
{
for(i=d_0;i<b;i++) printf("%c",d[i]);
printf(".");
for(;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
}
else if(b==len_d)//直接去掉小数点,并去掉前缀0
{
for(i=;i<len_d;i++) if(d[i]!='') break;
for(;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else//需要添加后缀0,并且去掉前缀0
{
for(i=;i<len_d;i++) if(d[i]!='') break;
for(;i<len_d;i++) printf("%c",d[i]);
for(i=;i<=b-len_d;i++) printf("");
printf("\n");
}
}
else
{
int i,cnt;
for(i=,cnt=;;i++,cnt++)
{
if(num[i]=='e') break;
d[cnt]=num[i];
}
d[cnt]='\0';
i++;
for(cnt=;num[i];i++,cnt++) b_[cnt]=num[i];
b_[cnt]='\0';
int len_b=strlen(b_);
b=;
for(i=;i<len_b;i++) b+=(b_[i]-'')*(int)pow(,(len_b--i));
int len_d=strlen(d);
if(b<len_d)//不需要添加0,需要移动小数点
{
printf("%c",num[]);
for(i=;i<b;i++) printf("%c",d[i]);
printf(".");
for(;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else if(b==len_d)//直接去掉小数点
{
printf("%c",num[]);
for(i=;i<len_d;i++) printf("%c",d[i]);
printf("\n");
}
else//需要添加后缀0
{
printf("%c",num[]);
for(i=;i<len_d;i++) printf("%c",d[i]);
for(i=;i<=b-len_d;i++) printf("");
printf("\n");
}
}
}
}

JNUOJ 1184 - 科学计数法的更多相关文章

  1. csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法

    保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...

  2. 【转】js 中导出excel 较长数字串会变为科学计数法

    [转]js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串 ...

  3. C# 科学计数法转换成数字

    /// <summary> /// 判断输入的数是否是科学计数法.如果是的话,就会将其换算成整数并且返回,否则就返回false. /// </summary> /// < ...

  4. C# 中科学计数法转成正常值

    抓取数据的时候碰到科学技术法,查了一些资料,直接贴代码 /// <summary> /// 数字科学计数法处理 /// </summary> /// <param nam ...

  5. PAT 1024. 科学计数法 (20)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...

  6. PHP 如何显示大数字,防止显示为 科学计数法 形式

    PHP 数字超过一定长度时,会自动转换为 科学计数法 的形式,如 1.2345678912346E+16: 如何 避免转换,让它原样展示呢? 不过,可以用PHP函数 number_format() 来 ...

  7. 关于解决读取导入excel某列数字过长的科学计数法格式

    因为 客户 需要导入 虚拟商品的卡号 excel已经是文本形式的单元格格式了 但是 到后台 java代码去获取的时候 仍然是 科学计数法格式 先找到以下资料做参考:http://love-66521. ...

  8. PAT乙级 1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  9. POI取消科学计数法

    前台输入手机号13777777777,如果是为Double类型接收,就会自动转为科学计数法 找了下,一般是Double转String,方法一般有两种: 1.利用String.format() sale ...

随机推荐

  1. Android零碎知识点 1

    Android零碎知识点 1   Android在2.3版本上开始支持KeyEvent.KEYCODE_PAGE_DOWN以及KeyEvent.KEYCODE_PAGE_UP的操作.   Androi ...

  2. Java压缩包解压到指定文件

    在获得一个以Zip格式压缩的文件之后,需要将其进行解压缩,还原成压缩前的文件.若是使用Java自带的压缩工具包来实现解压缩文件到指定文件夹的功能,因为jdk提供的zip只能按UTF-8格式处理,而Wi ...

  3. Java使用ListIterator逆序ArrayList

    对于列表而言,除了Iterator,还提供了一个功能更加强大的ListIterator.它可以实现逆序遍历列表中的元素.本示例将使用其逆序遍历ArrayList. 思路分析:要逆序遍历某个列表,首先要 ...

  4. CookieUtils工具类

    package com.taotao.common.util; import java.io.UnsupportedEncodingException; import java.net.URLDeco ...

  5. jQuery ajax中serialize()方法增加其他参数

    表单提交 使用jQuery.ajax()进行表单提交时,需要传递参数,最直接的方法便是使用Form的serializa()将表单序列化,前提只是将Form表单中的name属性与数据库的字段名保持一致便 ...

  6. XML的基本用法

    一.概述 XML全称为可扩展的标记语言.主要用于描述数据和用作配置文件. XML文档在逻辑上主要由一下5个部分组成: XML声明:指明所用XML的版本.文档的编码.文档的独立性信息 文档类型声明:指出 ...

  7. iOS添加自定义字体

    字体有相应的字体文件,一般是以ttf或者otf为后缀,我们可以去一些第三方网站去下载(也有人专门做了字体出售),Google Fonts是个比较好的网站,可以去找找看.我们就用Open Sans这个字 ...

  8. 安装win7到移动硬盘

    jpg改rar http://www.360doc.com/content/16/0816/10/19373891_583556875.shtml

  9. 手机端点击复制链接到剪切板(以及PC端)

    一直在找如何能点击按钮将一串字符串放到手机的剪切板上,但是可能是因为搜索的关键字不对,一直无果. 向同事请教了一下,给了一个clickboard.js的插件.开始试验的时候,使用手机自带浏览器进行测试 ...

  10. java框架---->commonmark的使用(一)

    commonmark-java是一个Markdown 解析器,一个基于CommonMark规范解析和渲染Markdown文本的Java库.偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么. c ...