【问题标题】: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”的答案是什么?

标签: python scientific-notation


【解决方案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

【讨论】:

  • 这似乎确实可以完成这项工作,非常感谢,我会投票并接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 2015-06-19
  • 2012-01-05
  • 1970-01-01
相关资源
最近更新 更多