题目描述
科学技术法
样例
输入:1.234e2
输出:123.4
input_str = input()
# 分割科学记数法字符串为系数部分和指数部分,并将指数部分转换为整数
coeff_str, exp_str = input_str.split('e')
exponent = int(exp_str)
# 找到系数部分中小数点的位置
decimal_idx = coeff_str.find('.')
# 计算系数部分中小数的位数,例如对于 "1.234",小数位数为 3
decimal_length = len(coeff_str) - 1 - decimal_idx
if exponent >= decimal_length:
"""
如果指数(代表小数点需要右移的位数)大于等于小数部分的位数,
则将系数部分去掉小数点后,在后面添加相应数量的 0(右移后补充的 0),
然后去除结果中的小数点输出。
"""
result = coeff_str.replace('.', '') + '0' * (exponent - decimal_length)
print(result)
else:
"""
如果指数小于小数部分的位数,需要按照规则移动小数点位置构建新的结果字符串。
先提取系数部分小数点前的整数部分、移动小数点后新的小数部分,然后重新组合,
加入新的小数点,再判断新的小数部分是否全为 0,若是则只输出整数部分,否则输出完整结果。
"""
integer_part = coeff_str[:decimal_idx]
new_decimal_part = coeff_str[decimal_idx + 1:decimal_idx + 1 + exponent]
remaining_decimal_part = coeff_str[decimal_idx + 1 + exponent:]
result = integer_part + new_decimal_part + '.' + remaining_decimal_part
integer_part, decimal_part = result.split('.')
if int(decimal_part) == 0:
print(integer_part)
else:
print(result)