【问题标题】:Most efficient way to find order of magnitude of float in python [duplicate]在python中找到float数量级的最有效方法[重复]
【发布时间】:2019-03-22 10:05:38
【问题描述】:

我必须进行一些迭代计算,并且每次都需要找到我的浮点数的数量级(科学计数法中 e 之后的位)。 目前我正在使用循环来执行此操作,但它会占用大量时间并且我的计算需要很长时间。

while n<1.0:
    order=order-1
    n=n*10

是否有一些函数可以用来从 python 存储浮点数的方式中快速提取这些信息? 我被告知浮点数分别存储值和指数。

编辑:这不是重复的,因为我要求的是最有效的方法。用对数提出的那个实际上比循环慢三倍。

【问题讨论】:

  • math.floor(math.log10(n))
  • 哦,是的,我是个白痴,谢谢xq
  • 其实这样只会让代码变慢
  • 我理解您对未解决速度问题的悲痛。然而,对于优化例程的单个调用会比循环慢,这有点令人惊讶。这表明可能涉及其他问题,在这种情况下,提供可重复的示例以便其他人可以测量和调查可能会有所帮助。此外,这两种方法都容易出现浮点舍入误差,因此都不能真正返回数学上正确的幅度。了解这对您的应用程序是否重要以及为什么或为什么不重要可能很有用。

标签: python performance loops floating-point processing-efficiency


【解决方案1】:

一个简单的方法是获取数字的日志,然后对日志的结果求底,如下所示:

import math
def orderOfMagnitude(number):
    return math.floor(math.log(number, 10))

【讨论】:

  • 实际上,如果我用这个替换循环,整个代码需要三倍的时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2012-05-06
  • 2013-06-06
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
相关资源
最近更新 更多