2014-03-14 117 views
1

要計算給定輸入的平方根,所以我使用該代碼平方根計算

var no1:Number = 2; 
var no2:Number; //input for calculation 
var total:Number; 
total=Math.pow(no2,(1/no1)); 

其工作,但我所面臨的問題,例如: - 如果我給

二氧化氮= 25 ;

話,就說明

總= 4.9999999

來克服這個問題,我用下面的代碼

總= Math.ceil(Math.pow(NO 2, (1/NO1)));

但它的okey爲25。

總= 5

的問題是,如果我給21,22,23,24

所有此輸入它顯示5

所以是有任何其他的解決方案?? ?

回答

1

如果你想利用次方根。您可以養活你的函數的輸出到任意取整函數是這樣的:

/** 
* Rounds input number to specified number of decimal places. For example 
* round(4.568, 2) will return 4.57, and round(4.99, 2) will return 5. 
*/ 
function round(num:Number, toDecimalPlaces:uint) { 
    var factor:uint = Math.pow(10, toDecimalPlaces); 
    return Math.round(num * factor)/factor; 
} 

/** 
* Returns nth root to two decimal places. 
*/ 
function nthRoot(n:uint, num:Number) { 
    return round(Math.pow(num, (1/n)), 2); 
} 
+0

爲√25.... rounded-result = 8.881784197001252e-16 ....所以我怎麼能把它轉換爲0.000000000000001 @Peter – subrat71

+1

我實際上建議使用第二種解決方案而不是第一種。 :) – Peter

+0

thanx @Peter ....你救了我的時間...祝你有個美好的一天 – subrat71

1

There's a function for that

var total:Number = Math.sqrt(no2); 
+0

亞我知道,但我給NO1爲變量,因爲我想計算3√(NO2),4√(NO2),5√ (no2)..... – subrat71

+0

3√(no2)只是一個double sqrt,所以'Math.sqrt(Math.sqrt(no2))',4√(no2)是一個三元sqrt等等。迭代地對數字進行平方根並返回結果。 – Shannon

0

我實際的代碼是這樣

var str:String=view.numDisplay.text;//input string 
var power:Number = Number(inString.charAt(inString.indexOf('√') - 1));//to get the value before √ i.e no1 
var no1:Number; 
var no2:Number; 
var total:Number; 
if(power) 
    no1=v; 
else 
    no1=2; 
no2=getSubTerm();//method to find no2 it returns the number for calculation 
total=Math.ceil(Math.pow(no2,(1/no1)));