2014-09-19 21 views
1

我要計算一個簡單的商數:計算商與對數的log 2

log2(val1)/log2(val2) 

從來就此次嘗試與:

var valueOne = Math.log2(val1); 
var valueTwo = Math.log2(val2); 
var quotient = valueOne/valueTwo; 

不幸的是,它不work.As我發現,有明顯的與Math.log2

在Chrome中,我得到*'Uncaught TypeError: undefined is not a function'*

瀏覽器兼容性問題

現在如何計算商?

回答

3

使用此自定義函數

function log2(val) { 
return Math.log(val)/Math.LN2; 
} 

var valueOne = log2(val1); 

DEMO

+0

請注意'log2(Math.pow(2,29))!== 29'。 – 2014-09-19 11:01:55

+0

@ Qantas這是一個舍入誤差。 – Afsa 2014-09-19 11:05:00

+0

@Afsa:當然這是一個快速修復,如果你不關心準確性,那麼它是有用的,但是如果你需要'log2'的精確結果或者你正在使用'floor' /'ceil'在上面。 – 2014-09-19 11:06:39

1

Math.log2(x)函數可以計算爲Math.log(x)/Math.LN2;。這可以從對數的性質中得出。

.log2()函數是Math構造函數的新手,並且不受所有瀏覽器支持。

+0

你在你的代碼中的錯誤。 (y)/ ln(2)= ln(y)/ ln(ln(2))' – Afsa 2014-09-19 11:17:47

+0

@Afsa ??是吧?哦,等一下,我明白你的意思了;杜爾。謝謝。 – Pointy 2014-09-19 12:04:20