Dans PHP, la fonction FMOD () est utilisée pour calculer le reste après avoir divisé deux nombres de points flottants. Contrairement à l'opérateur de module% , FMOD () traite les nombres de points flottants et le symbole du reste est le même que le dividende. Cela fait que FMOD () montre des scénarios de comportement et d'application spéciaux lors du calcul des restes négatifs. Cet article expliquera l'application pratique du calcul des restes négatifs dans la fonction fmod () et ses précautions.
fmod (float $ num1, float $ num2): float
fmod () calcule le reste après avoir divisé $ num1 par $ num2 , et le symbole de la valeur de retour est cohérent avec $ num1 .
<?php
echo fmod(5.7, 2.3); // Sortir 1.1
echo fmod(-5.7, 2.3); // Sortir -1.1
?>
On peut voir que lorsque le diviseur est négatif, le reste a également un signe négatif.
Calcul du temps et traitement périodique
Lors du traitement des événements et des événements périodiques, il est souvent nécessaire d'effectuer des opérations de modulo sur des horodatages ou des compteurs. Lorsque l'heure ou le nombre peut être négatif (comme le compte à rebours ou la différence de temps), l'utilisation de FMOD () peut gérer correctement les restes négatifs et garder la logique de temps correcte.
<?php
$time = -7.5; // Représente les secondes à compte à rebours
$period = 3.0; // La période est3Deuxième
$remainder = fmod($time, $period); // Le résultat est -1.5
?>
Coordonner le calcul et l'animation en boucle
Dans les graphiques ou les animations, les calculs de position peuvent impliquer des opérations de module à virgule flottante, et des restes négatifs peuvent être utilisés pour calculer les boucles inversées ou les effets de l'enroulement.
Restes négatifs dans les calculs financiers
Certains calculs financiers impliquent des ajustements des taux d'intérêt ou des dépenses cycliques, et le reste négatif peut refléter avec précision la marge dans le cas négatif.
Le symbole reste est le même que le symbole de dividende
Le symbole de valeur de retour du FMOD () est cohérent avec le dividende $ num1 , qui est différent du comportement de l'opérateur% en php.
<?php
echo fmod(-5, 3); // Sortir -2
echo (-5 % 3); // Sortir -2,Les résultats sont les mêmes mais les types sont différents,fmod Renvoie un numéro de point flottant
?>
Différences par rapport au fonctionnement du module entier
FMOD () calcule le reste du point flottant, et le résultat peut prendre une décimale, tandis que % ne prend en charge que les entiers. Les erreurs de points flottants peuvent entraîner des problèmes de précision.
Le diviseur ne peut pas être nul
Le diviseur adopté $ NUM2 ne peut pas être nul, sinon un avertissement sera généré et un NAN sera retourné.
Traitement de diviseur négatif
Lorsque le diviseur est négatif, le signe reste dépend toujours du dividende, pas du diviseur.
<?php
echo fmod(5, -3); // Sortir 2
echo fmod(-5, -3); // Sortir -2
?>
L'exemple suivant démontre le calcul et l'application pratique du reste négatif:
<?php
// Calculez la période restante du temps négatif
function cycleTime(float $time, float $period): float {
$mod = fmod($time, $period);
// Le reste uniforme est positif(0 arriver $period entre)
if ($mod < 0) {
$mod += $period;
}
return $mod;
}
$times = [-7.5, -3.1, 0, 2.5, 7.8];
$period = 3.0;
foreach ($times as $t) {
echo "temps: $t,Période reste: " . cycleTime($t, $period) . "\n";
}
?>
Sortir:
temps: -7.5,Période reste: 1.5
temps: -3.1,Période reste: 2.9
temps: 0,Période reste: 0
temps: 2.5,Période reste: 2.5
temps: 7.8,Période reste: 1.8
Grâce à cette méthode, nous pouvons convertir le reste négatif en nombres positifs, ce qui est pratique pour le traitement périodique.
Si vous voulez en savoir plus sur l'utilisation des fonctions PHP, vous pouvez vous référer à la documentation officielle PHP: