一行输入正整数
,不含前导零。
输出
的科学计数法表示 ``
``。
299792458
3.0*10^8
602214129000000000000000
6.0*10^23
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String n = scanner.nextLine();
scanner.close();
int len = n.length();
// 指数c初始为位数减1
int c = len - 1;
// 第一位数字a
int a = n.charAt(0) - '0';
// 第二位数字d2
int d2 = n.charAt(1) - '0';
// 第三位数字d3,用于四舍五入判断
int d3 = n.charAt(2) - '0';
// 判断是否需要对d2进位
int carry = d3 >= 5 ? 1 : 0;
d2 += carry;
// 处理d2进位后可能等于10的情况
if (d2 == 10) {
d2 = 0;
a += 1;
// 处理a进位后可能等于10的情况
if (a == 10) {
a = 1;
c += 1;
}
}
// 按格式输出结果
System.out.printf("%d.%d*10^%d\n", a, d2, c);
}
}
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
int k, a, b;
a = s[0] - '0';
b = s[1] - '0';
k = s.size() - 1;
if (s[2] - '0' >= 5) {
b = (s[1] - '0') + 1;
}
if (b == 10 ) {
a = (s[0] - '0') + 1;
b = 0;
if (a == 10) {
a = 1;
b = 0;
k = s.size();
cout << a << '.' << b << '*' << 10 << '^' << k;
return 0;
}
k = s.size() - 1;
cout << a << '.' << b << '*' << 10 << '^' << k;
return 0;
}
cout << a << '.' << b << '*' << 10 << '^' << k;
return 0;
}
// 64 位输出请用 printf("%lld")
import sys
N = input()
c=len(N)-1
if int(N[2])>=5:
b= int(N[1])+1
else:
b = int(N[1])
if b == 10:
b=0
a = int(N[0])+1
else:
a=int(N[0])
if a == 10:
a = 1
b = 0
c+=1
print(f'{a}.{b}*10^{c}')