从科学记数法中提取指数
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
【讨论】:
这似乎确实可以完成这项工作,非常感谢,我会投票并接受答案。以上是关于从科学记数法中提取指数的主要内容,如果未能解决你的问题,请参考以下文章