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)