<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 這裡是文章前的無關PHP代碼示例</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummyFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"這段代碼與文章內容無關。"</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">dummyFunction</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>在PHP 中,平方根函數sqrt()用於計算一個數的平方根。它的使用方法非常簡單,但在處理特殊值(如0 或負數)時,需要理解其行為和潛在問題,以避免運行時錯誤或意外結果。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$number</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">sqrt</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// 輸出 0</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>在PHP 中, sqrt(0)會返回0 。這完全符合數學邏輯,因為0 的平方根就是0。這種情況是安全的,不會產生警告或錯誤。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$number</span></span><span> = -</span><span><span class="hljs-number">4</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">sqrt</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>嘗試對負數使用sqrt()會導致一個PHP 警告:
<span><span><span class="hljs-built_in">Warning</span></span><span>: sqrt() expects parameter </span><span><span class="hljs-number">1</span></span><span> </span><span><span class="hljs-keyword">to</span></span><span> be </span><span><span class="hljs-type">float</span></span><span>, negative given
</span></span>並且返回NaN(Not a Number) 。這是因為在實數範圍內,負數沒有平方根。如果需要處理負數的平方根,需要引入複數的概念。
PHP 自帶的sqrt()無法直接處理複數,但可以通過一些擴展或自定義函數實現:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">sqrtComplex</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$number</span></span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$number</span></span><span> >= </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">sqrt</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">sqrt</span></span><span>(</span><span><span class="hljs-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>)) . </span><span><span class="hljs-string">'i'</span></span><span>;
}
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">sqrtComplex</span></span><span>(-</span><span><span class="hljs-number">9</span></span><span>); </span><span><span class="hljs-comment">// 輸出 3i</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>這裡我們將負數平方根表示為虛數形式,其中i表示虛數單位。
檢查輸入值:在調用sqrt()前先判斷是否為負數,以避免警告。
處理0 :0 是安全的,直接計算即可。
考慮複數情況:如果程序需要處理負數平方根,可以用自定義函數或第三方庫表示複數。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$number</span></span><span> = -</span><span><span class="hljs-number">16</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$number</span></span><span> < </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"平方根為虛數: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">sqrtComplex</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"平方根為實數: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">sqrt</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span>);
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>這樣可以保證程序不會因為負數輸入而出現警告或錯誤,同時正確返回結果。