科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分
只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
+1.23400E-03
0.00123400
import java.util.Collections;
import java.util.Scanner;
/**
* @ClassName Main
* @Description TODO
* @Author Wlison
* @Date 2020/3/11 9:38
* @Version 1.0
**/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str = sc.nextLine();
String[] es = str.split("E");
int loc = Integer.parseInt(es[1].substring(1));
String res = es[0].replace(".","");
if (es[1].charAt(0)=='-') {
res = "0." + String.join("", Collections.nCopies(loc - 1, "0")) + res.substring(1);
}else{
if (loc+2<res.length()){
res = res.substring(1,loc+2)+"."+res.substring(loc+2);
}else {
res = res.substring(1)+String.join("",Collections.nCopies(loc+2-res.length(),"0"));
}
}
if (es[0].charAt(0)=='-'){
System.out.println('-'+res);
}else {
System.out.println(res);
}
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static BufferedReader bufferedReader;
public static void main(String[] args) throws IOException {
bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String string = bufferedReader.readLine();
char sign1 = string.charAt(0);
StringBuilder result = new StringBuilder();
StringBuilder first = new StringBuilder(string.substring(1, string.indexOf('E')));
String second = string.substring(string.indexOf('E') + 1);
char sign2 = second.charAt(0);
int num = Math.abs(Integer.parseInt(second));
// 左移
if (sign2 == '-') {
for (int i = 0; i < num; i++) {
result.append('0');
}
first.deleteCharAt(1);
result.append(first);
result.insert(1, '.');
} else if (sign2 == '+') { // 右移
result.append(first);
if (num >= first.length() - 2) {
result.deleteCharAt(1);
for (int i = 0; i < num - first.length() + 2; i++) {
result.append('0');
}
} else {
result.deleteCharAt(1); // 测试通过
result.insert(num + 1, '.');
}
}
if (sign1 == '-') {
result = new StringBuilder("-").append(result);
}
System.out.println(result);
}
} //模拟new BigDecimal(iniString).toPlainString() 方法写,虽然有瑕疵,但也是自己的一份成果 public static String countionMethod(String iniString) { StringBuffer stringBuffer = new StringBuffer(); String[] es = iniString.split("E"); String numStr = es[0].substring(1); String estr = es[1].replaceFirst("[+-]", ""); int e = Integer.parseInt(estr); if (es[1].startsWith("+")) { if (e >= (numStr.length() - 2)) { stringBuffer.append("+").append(numStr.replaceAll("\\.", "")); while ((e - (numStr.length() - 2)) > 0) { stringBuffer.append("0"); e--; } } else { stringBuffer.append(numStr.charAt(0)) .append(numStr.substring(2, e + 2)) .append(".") .append(numStr.substring(e + 2, numStr.length())); } } else { stringBuffer.append("-0."); while ((e - 1) > 0) { stringBuffer.append("0"); e--; } stringBuffer.append(numStr.replaceAll("\\.", "")); } return stringBuffer.toString(); }
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
//创建键盘输入流
Scanner scan = new Scanner(System.in);
//接收
String s = scan.next();
scan.close();
//定义最后输出的字符串
String sum = "";
//判断即将输出的是否是正数
if(s.charAt(0) == '-') {
sum += "-";
}
//将第一位符号去掉
s = s.replaceFirst("\\W", "");
//从E处进行切割
String[] sNum = s.split("[A-Z]");
//判断小数点是向前移还是向后移
if(sNum[1].charAt(0) == '+') {
//向后移,去掉原字符串点后在末尾加零
sum += sNum[0].replaceAll("\\W", "");
for (int i = 0; i < Integer.parseInt(sNum[1].replaceFirst("[+-]", "")) - (sNum[0].length() - 2); i++) {
sum += "0";
}
}else {
//向前移,在开头加上0.后加上零再加上原字符串
sum += "0.";
for (int i = 0; i < Integer.parseInt(sNum[1].replaceFirst("[+-]", "")) - 1; i++) {
sum += "0";
}
sum += sNum[0].replaceAll("\\W", "");
}
System.out.println(sum);
}
}
package hjj0423;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str=in.nextLine();
String str1[]=str.split("\\.");
String str2[]=str1[1].split("E");
int n1=Integer.valueOf(str1[0]);
int n2=Integer.valueOf(str2[0]);
int n3=Integer.valueOf(str2[1]);
StringBuffer sb = new StringBuffer(Math.abs(n1)+""+n2);
if (n3>0) {
if(str2[0].length()-n3>0){
sb.insert(str2[0].length()-1, ".");
}else {
for (int i = 0; i < n3-str2[0].length(); i++) {
sb.append("0");
}
}
}else {
for (int i = 0; i < -n3; i++) {
sb.insert(0, "0");
}
sb.insert(1, ".");
}
if (n1<0)
sb.insert(0, "-");
System.out.println(sb);
}
}
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = newBufferedReader(newInputStreamReader(System.in));
String argument = bufferedReader.readLine();
String speedUpString = "000000000000000000000000000000000000000000000000000000000000";
String[] s1 = argument.split("E");
String radixString = s1[0].replaceAll("[+.]", "");
int exponent = Integer.parseInt(s1[1]);
if(exponent < 0) {
StringBuffer temp = newStringBuffer("");
if(radixString.charAt(0) == '-') {
temp.append("-");
radixString = radixString.replaceAll("-", "");
}
temp.append("0.");
while((exponent + 1) < 0) {
if(exponent < -61) {
temp.append(speedUpString);
exponent += 60;
}else{
temp.append('0');
exponent++;
}
}
temp.append(radixString);
System.out.println(temp);
}else if(exponent > 0) {
StringBuffer temp = newStringBuffer("");
if(radixString.charAt(0) == '-') {
radixString = radixString.replaceAll("-", "");
temp.append("-");
}
temp.append(radixString.charAt(0));
intflag = 1;
while(exponent > 0) {
if(flag < radixString.length()) {
temp.append(radixString.charAt(flag));
flag++;
}else{
while(exponent > 0) {
if(exponent > 60) {
temp.append(speedUpString);
exponent -= 60;
}else{
temp.append('0');
exponent--;
}
}
}
exponent--;
}
if(flag < radixString.length()) {
temp.append(".");
while(flag < radixString.length()) {
temp.append(radixString.charAt(flag));
flag++;
}
}
System.out.print(temp);
}
}
}