Position actuelle: Accueil> Derniers articles> Comment la fonction SQRT de PHP gère-t-elle correctement 0 et les nombres négatifs?

Comment la fonction SQRT de PHP gère-t-elle correctement 0 et les nombres négatifs?

gitbox 2025-09-11

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Ce n&#39;est pas pertinent avant l&#39;articlePHPExemple de code</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">"Ce code n&#39;a rien à voir avec le contenu de l&#39;article。"</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">?&gt;</span></span><span>
</span></span>

En PHP, la fonction de racine carrée sqrt () est utilisée pour calculer la racine carrée d'un nombre. Il est très simple à utiliser, mais lorsqu'il s'agit de valeurs spéciales telles que 0 ou des nombres négatifs, il doit comprendre son comportement et ses problèmes potentiels pour éviter les erreurs d'exécution ou les résultats inattendus.

1. Traitement de 0

 <span><span><span class="hljs-meta">&lt;?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">// Sortir 0</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans PHP, SQRT (0) renvoie 0 . Ceci est complètement conforme à la logique mathématique, car la racine carrée de 0 est 0. Cette situation est sûre et ne génère pas d'avertissements ou d'erreurs.

2. Traitement des nombres négatifs

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

Tenter d'utiliser SQRT () sur des nombres négatifs entraîne un avertissement 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>

Et retour nan (pas un nombre) . En effet, dans la plage réelle, les nombres négatifs n'ont pas de racines carrées. Si vous devez faire face à la racine carrée des nombres négatifs, vous devez introduire le concept de nombres complexes.

Utilisez la bibliothèque de classe complexe pour traiter les nombres pluriels

Le propre SQRT () de PHP ne peut pas gérer directement les numéros pluriels, mais peut être implémenté par certaines extensions ou fonctions personnalisées:

 <span><span><span class="hljs-meta">&lt;?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> &gt;= </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">// Sortir 3i</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Ici, nous représentons la racine carrée du nombre négatif comme une forme imaginaire, où je représente l'unité imaginaire.

3. Suggestions d'utilisation sûre

  1. Vérifiez la valeur d'entrée : déterminez s'il s'agit d'un nombre négatif avant d'appeler SQRT () pour éviter les avertissements.

  2. Le traitement 0 : 0 est sûr, calculez-le simplement directement.

  3. Envisagez des cas pluriels : si le programme doit faire face à des racines carrées négatives, vous pouvez utiliser une fonction personnalisée ou une bibliothèque tierce pour représenter les pluriels.

 <span><span><span class="hljs-meta">&lt;?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> &lt; </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">"La racine carrée est un nombre imaginaire: "</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">"La racine carrée est réelle: "</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">?&gt;</span></span><span>
</span></span>

Cela garantit que le programme ne provoquera pas d'avertissements ou d'erreurs dus aux entrées négatives et renvoiera correctement le résultat.