在我的算法中,我想计算当前整数n是否恰好最接近0.1的任何正倍数的反对数,因此0.1、1.0、1.1、7.9、21.5等等
反对数? 反对数(x)=10x
我在这里找到了一个在线计算器:http://ncalculators.com/number-conversion/anti-log-logarithm-calculator.htm但在任何地方我都找不到用Python或任何其他编程语言来实现这一点的例子。在
如果我不能用Python找到一系列数字的反对数,我就不得不在我的程序中存储一个反对数值的列表,为了提高性能,我可能会考虑无论如何,但是如果能找出如何在代码中实现这一点,那就太好了。在
更新: 通过第一个答案的代码,我能够做到这一点,这段代码充分展示了我所要做的一切:
#!/usr/bin/python
import sys
import math
for x in xrange(1, 1000000):
target = round(math.log10(x),1)
int_antilog = int(10**target+0.5) #fast round() alternative
if (x == int_antilog):
print 'do something at call ' + str(x)
Python有一个power operator,它执行您要执行的求幂运算:
示例:
^{pr2}$用你喜欢的方式取整并转换成整数,你就可以开始了。在
如果k是与0.1的倍数的幂最接近的整数,那么}。如果
k ≈ 10ᵐʳ
,其中m是整数,r=0.1
,所以ln k ≈ m r ln 10
和{u = log₁₀(k)/r
,那么最接近k的0.1的倍数的10的值是10的r
乘以u的下限或u的上限,如下面的代码所示。在以下是通过ipython解释器得到的结果示例:
^{pr2}$相关问题 更多 >
编程相关推荐