1 题目
2 代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class B1024 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
StringBuilder res = new StringBuilder("");
int ePos = 0;
if (input.charAt(0) == '-')
System.out.print("-");
for (int i = 1; i < input.length(); i++) {
if (input.charAt(i) == 'E') {
ePos = i;
break;
}
}
int exp = Integer.parseInt(input.substring(ePos + 2, input.length()));
if (exp == 0) {
System.out.println(1);
} else {
if (input.charAt(ePos + 1) == '+') {
for (int i = 1; i < ePos; i++) {
if (input.charAt(i) != '.')
res.append(input.charAt(i));
}
if (res.length() - 1 > exp) {
res.insert(exp + 1, ".");
} else {
int len = res.length();
for (int i = 0; i < (exp - len + 1); i++) {
res.append('0');
}
}
if (res.charAt(0) == '0') {
System.out.println(res.substring(1));
} else
System.out.println(res);
} else {
for (int i = 1; i < ePos; i++) {
if (input.charAt(i) != '.')
res.append(input.charAt(i));
}
for (int i = 0; i < exp; i++) {
res.insert(0, '0');
}
res.insert(1, '.');
System.out.println(res);
}
}
}
}
3 要点
(1)首先确定数字的正负,然后确定‘E’的位置。
(2)通过‘E’后面的正负号区分小数点往前还是往后移动。
(3)如果往后移动,判断指数和‘E’前字符串长度大小,看看是否要添加‘0’;往前移动类似,且更简单。