Roo*_*kie 0 c++ math logarithm visual-studio-2008
我确定我以前在学校有这个,但我不记得这个叫做什么.
我有任意数字,我需要知道我可以将它乘以0.9(或任何其他值0-1)多少次,直到距离原始数字小于x.
它采用循环格式,如下所示:
num = 4654;
mult = 0.9;
limit = 140;
count = 0;
while(num >= limit){
num *= mult;
count++;
}
Run Code Online (Sandbox Code Playgroud)
但这是否可以在没有循环的情况下完成?有对数的东西?
注意
num * (0.9)^k <= limit
Run Code Online (Sandbox Code Playgroud)
是你希望满足一些整数的不等式k,你寻求最小的整数k.然后
(0.9)^k <= limit / num
Run Code Online (Sandbox Code Playgroud)
和
k * log(0.9) <= log(limit / num)
Run Code Online (Sandbox Code Playgroud)
以便
k >= log(limit / num) / log(0.9)
Run Code Online (Sandbox Code Playgroud)
不平等因此而逆转的地方log(0.9) < 0.因此,采取的最小整数k大于log(limit / num) / log(0.9).
所以,采取上限log(limit / num) / log(0.9).
当然,这可以通过替换乘数0.9的r位置r来概括(0, 1).