我確定我以前在學校有這個,但我不記得這個東西叫做什麼。如何計算減小的值何時達到某個點?
我有任意數字,我需要知道多少次我可以乘以0.9(或任何其他值0-1),直到從原始數字小於x剩餘。
在一個循環的格式它看起來像:
num = 4654;
mult = 0.9;
limit = 140;
count = 0;
while(num >= limit){
num *= mult;
count++;
}
但是,這甚至有可能沒有環辦?有對數的東西?
我確定我以前在學校有這個,但我不記得這個東西叫做什麼。如何計算減小的值何時達到某個點?
我有任意數字,我需要知道多少次我可以乘以0.9(或任何其他值0-1),直到從原始數字小於x剩餘。
在一個循環的格式它看起來像:
num = 4654;
mult = 0.9;
limit = 140;
count = 0;
while(num >= limit){
num *= mult;
count++;
}
但是,這甚至有可能沒有環辦?有對數的東西?
注意
num * (0.9)^k <= limit
是要滿足一些整數k
的不平等,以及你所尋求的最小這樣k
。然後
(0.9)^k <= limit/num
和
k * log(0.9) <= log(limit/num)
使
k >= log(limit/num)/log(0.9)
在不平等逆轉,因爲log(0.9) < 0
。因此,取最大整數k
大於log(limit/num)/log(0.9)
。
所以,取上限爲log(limit/num)/log(0.9)
。
當然,這概括了由r
更換0.9
其中r
是(0, 1)
你事半功倍。
數=日誌(極限/ NUM)/日誌(多重)