从科学计数法中提取指数

8

我有一堆用科学计数法表示的数字,我想找到它们的指数。例如:

>>> find_exp(3.7e-13)
13

>>> find_exp(-7.2e-11)
11

因此,我只需要他们的指数,忽略其他内容,包括符号。 我在Python中寻找这样的方法,但类似的问题仅用于格式化目的。

2
为什么不将它们作为字符串转换,然后使用正则表达式提取破折号后面的最后一部分。然后你可以再转回数字。 - The Fool
这不是一个选项。同样地,我可以在将字符串转换为浮点数后拆分它。 - Eilleen
2
为什么这不是一个选项呢?此外,基于破折号进行分割可能会有些不稳定,因为它可能带有负号和无符号。你需要在检查中包含这一点。 - The Fool
看起来输入已经是字符串格式了(参见引号)。 - trincot
你还有哪些字符串?有些字符串在小数点前面有多于一位的数字,例如“26.3e-10”,或者表示总是规范化的吗?其次,“1.1111111111e2”的答案是什么? - trincot
1个回答

11

常用对数是你需要的,你可以使用log10+floor

from math import log10, floor

def find_exp(number) -> int:
    base10 = log10(abs(number))
    return abs(floor(base10))

find_exp(3.7e-13)
# 13

find_exp(-7.2e-11)
# 11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接