4
我試圖將一個數字舍入到另一個數字的下一個最小功率。我並不特別指出它朝哪個方向發展,但如果可能的話,我更喜歡向下。四捨五入到給定基地的最接近的整數功率
我四捨五入的數字x
將滿足:x > 0
,並且通常在0 < x <= 1
範圍內。只有很少會超過1.
更一般地說,我的問題是:給定一個數x
,我怎麼能四捨五入到最接近的一些基地的整數功率b
?
我希望能夠繞過任意的基礎,但我最關心的是基數2和2的分數冪,如2 ^(1/2),2 ^(1/4)等等。這是我目前的基數爲2的算法。
double roundBaseTwo(double x)
{
return 1.0/(1 << (int)((log(x) * invlog2))
}
任何幫助,將不勝感激!
謝謝!這正是我正在尋找的。你會碰巧知道是否有更快的方式做,或者我堅持這樣做?我正在考慮爲普通值做一個查找表,因爲這是在我的主循環中非常頻繁地計算的。 – 2010-04-25 06:38:12
不客氣。 :)關於加快速度,我認爲查找表可以做的很好。如果你可以將你的基數的所有能力存儲在一個數組中(即足夠覆蓋你需要的整個範圍),那麼只需要一個簡單的二進制搜索來做四捨五入。當然,你需要使用一個這樣的陣列用於你使用的每個基地。 – tzaman 2010-04-25 11:48:14