noti che fmod non è equivalente a questa funzione di base:
<?php
function modulo($a, $b) {
return $a - $b * floor($a/$b);
}
?>
perché fmod() restituirà un valore con lo stesso segno da $ a. In altre parole, la funzione floor() non è corretta mentre si arrotonda verso -INF anziché verso zero.
di emulare fmod ($ a, $ b) il modo corretto è:
<?php
function fmod($a, $b) {
return $a - $b * (($b < 0) ? ceil($a/$b) : floor($a/$b)));
}
?>
nota che entrambe le funzioni lancerà una divisione per zero se $ b è nullo.
La prima funzione modulo() di cui sopra è la funzione matematica che è utile per lavori su strutture cicliche (come computions calandra o funzioni trignonometric:
- fmod($a, 2*PI) returns a value in [0..2*PI) if $a is positive
- fmod($a, 2*PI) returns a value in [-2*PI..0] if $a is negative
- modulo($a, 2*PI) returns a value always in [0..2*PI) independantly of the sign of $a
fonte
2013-08-13 06:30:38
Forse dovresti indicare come ti aspetti di gestire uno zero? –
si prega di modificare e migliorare, ho chiesto a questa domanda di essere utilizzato come riferimento –
Akam, ciò che dovrebbe accadere quando si incontra uno zero è specifico per il problema/dominio. Se stai per creare una wiki che descriva ciò che fanno queste funzioni, fallo. –