在python中找到浮点数量级的最有效方法

faz*_*zan 1 python floating-point performance loops processing-efficiency

我必须进行一些迭代计算,并且每次都需要找到浮点数的数量级(科学记数法中 e 之后的那个位)。目前我正在用一个循环来做这件事,但它占用了很多时间,我的计算需要永远。

while n<1.0:
    order=order-1
    n=n*10
Run Code Online (Sandbox Code Playgroud)

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

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

小智 12

一种简单的方法是获取数字的日志,然后对日志的结果进行取整,如下所示:

import math
def orderOfMagnitude(number):
    return math.floor(math.log(number, 10))
Run Code Online (Sandbox Code Playgroud)