从科学记数法中提取指数

Posted

技术标签:

【中文标题】从科学记数法中提取指数【英文标题】:Extracting the exponent from scientific notation 【发布时间】:2020-10-03 11:37:53 【问题描述】:

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

>>> find_exp(3.7e-13)
13

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

因此我只需要他们的指数,而忽略包括符号在内的所有其他内容。

我在 python 中寻找过这种方式,但类似的问题仅用于格式化目的。

【问题讨论】:

为什么不将它们原样转换为字符串。然后使用正则表达式提取破折号后的最后一部分。然后你可以转换回数字。 这不是一个选项。同样,我可以在将字符串转换为常规浮点数后拆分字符串 为什么它不是一个选项?在破折号上拆分也会有点不稳定,因为它可以用减号和无符号进行签名。您需要将其包含在您的支票中。 看来输入已经是字符串格式(参见引号)。 您还有哪些其他字符串?有些小数点前是否有不止一位数字,例如“26.3e-10”,还是符号总是标准化?其次,“1.1111111111e2”的答案是什么? 【参考方案1】:

Common logarithm是你这里需要的,你可以使用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

【讨论】:

这似乎确实可以完成这项工作,非常感谢,我会投票并接受答案。

以上是关于从科学记数法中提取指数的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试从结果中删除指数数字[重复]

Matlab中如何获取科学记数法的指数

在 Python 中读取科学记数法的指数

Python中科学计数法中的指数数字

科学计数法中的尾数基指数

从字符串中提取科学数字