科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
输入格式:
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
输出格式:
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
输入样例1:+1.23400E-03输出样例1:
0.00123400输入样例2:
-1.2E+10输出样例2:
-12000000000
package Basic1024;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
String str = input.next();
char fuhao = str.charAt(0);
StringBuffer coefficient = new StringBuffer(str.substring(1, str.indexOf('E')));
char signOfZhishu = str.charAt(str.indexOf('E') + 1);
String exp = str.substring(str.indexOf('E') + 2);
int zhishu = Integer.parseInt(exp);
if (signOfZhishu == '-') {
StringBuffer sBuffer = new StringBuffer("0.");
for (int i = 0; i < (zhishu-1); i++) {
sBuffer.append("0");
}
coefficient.deleteCharAt(coefficient.indexOf("."));
sBuffer.append(coefficient);
coefficient = sBuffer;
} else {
if (coefficient.length() - 3 >= zhishu) {
coefficient.insert(zhishu + 2, ".");
coefficient.deleteCharAt(coefficient.indexOf("."));
} else {
coefficient.deleteCharAt(coefficient.indexOf("."));
int bu = zhishu - (coefficient.length() - 1);
while (bu != 0) {
coefficient.append("0");
bu--;
}
}
}
if (fuhao == '-') {
coefficient.insert(0, '-');
}
System.out.println(coefficient);
}
}
}