【发布时间】: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