開方函式手動實現

2021-09-12 18:38:24 字數 923 閱讀 2460

曾經面試讓手動實現保留2位小數的函式,現在想來將其發出來(排版可能不好,因為csdn體驗度本來就差)​​​​​​​​​​​​​​

實現思想:

利用二分法找整數,迴圈迭代找小數。

例如:111開方,保留兩位小數。

(10+a)^2 = 111

a^2 + 2 * 10 * a = 11

a = 0.55 - a^2 / 20

因為0-0.05

0.5所以小數第一位為5

然後找第二位

(10.5+a)^2 = 111

重複第一步操作,直到找到第二位小數。

注意:這裡為了獲得更加精準的結果通常要多執行一位。

例如獲取2為小數,實際要計算三位精度,然後再取兩位小數(四捨五入)

// 開方

function _sqrt($targetnumber, $d)else if($targetnumber == 0 )

$ac = 1;$ack = $ac;

for($i = 0; $i <= $d; $i++)

$sqrtnumber = findinteger($targetnumber);

while(1)

return sprintf("%.".$d."f", $sqrtnumber);

}//整數

function findinteger($targetnumber)

$remain = $square - $targetnumber;

$sqrtnumber = $sqrtnumber - floor($remain / 2 / $sqrtnumber);

while(1)

break;

}return $sqrtnumber;

}$number = '216';

echo _sqrt($number,2);

手動實現函式 atoi

atoi 函式用來將字串轉換成整數 int 其原型為 int atoi const char str 函式說明 atoi 函式會掃瞄引數 str 字串,跳過前面的空白字元 例如空格,tab縮排等,可以通過 isspace 函式來檢測 直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時 0...

手動實現flat函式

首先何謂陣列扁平化?我也不會解釋,直接上 就很直觀 這是原始陣列,可以看到巢狀了很多層的,也就是很多維陣列 let arr 1 2,2,3 10,11 3,4 5,6,7,8 9 array.flat函式支援傳入乙個數值型別引數n,代表我們希望的能夠扁平化的維數 2,2 3,10 11,3 4,5,...

C 手動實現庫函式

已知strcpy的函式原型 char strcpy char strdest,const char strsrc 其中strdest 是目的字串,strsrc 是源字串。不呼叫c c 的字串庫函式,請編寫函式 strcpy。1 include 2 3char strcpy char strdest,...