fmod

fmod($delenec, $delitel)

Vrátí zbytek po dělení dvou čísel, která mohou být desetinná. Operátor % pracuje jen s celými čísly a desetinnou část předem zahodí.

Parametry

  • $delenec – dělené číslo.
  • $delitel – číslo, kterým se dělí.

Příklady

echo fmod(7.5, 2); // 1.5
// operátor % počítá jen s celými čísly
echo 7 % 2; // 1
// výsledek je vždy desetinné číslo
var_dump(fmod(10, 5)); // float(0)
// znaménko výsledku je podle dělence
echo fmod(-7, 3); // -1
echo fmod(7, -3); // 1
// úhel převedený do rozsahu 0 až 360
echo fmod(450, 360); // 90
echo fmod(fmod(-90, 360) + 360, 360); // 270
// je číslo násobkem čtvrtiny?
var_dump(fmod(1.75, 0.25) == 0); // bool(true)
// u čísel jako 0.1 se projeví nepřesnost desetinných čísel
var_dump(fmod(0.3, 0.1) == 0); // bool(false)
// dělení nulou
var_dump(is_nan(fmod(5, 0))); // bool(true)

Na co si dát pozor

  • Desetinná čísla nejsou uložená přesně. Zbytek po dělení čísla 0,3 číslem 0,1 proto nevyjde nula. Násobky částek kontrolujte v celých číslech (haléřích) operátorem %.
  • Znaménko výsledku se řídí dělencem, takže zbytek záporného čísla je záporný. Kladný zbytek dá postup z příkladu s úhlem.
  • Dělení nulou nevyhodí chybu, vrátí NAN. Operátor % při dělení nulou vyhodí výjimku DivisionByZeroError.
  • Vrací vždy desetinné číslo. Pro celá čísla použijte operátor % nebo intdiv().

Příbuzné funkce:
intdiv()
floor()
round()