/ / fmod funkcia z math.h knižnice v C nefunguje správne? - c, matematika, gcc, cygwin, modulo

fmod funkcia z math.h knižnice v C nefunguje správne? - c, matematika, gcc, cygwin, modulo

Ok, tak dúfam, že nevyzerám ako idiot z tejto otázky ... ako je to celkom jednoduché, ale môj mozog je buď na dovolenke, alebo je niečo naozaj zlé.

tak -4 % 5 alebo -4 mod 5 by sa mali rovnať 1 opraviť? Prečo je to tak fmod funkcie z knižnice math.h -4 keď ho používate, tzn fmod(-4, 5) výnos -4 namiesto 1, Používam gcc compiler via cygqin ak je to aj nejaká pomoc.

Vďaka!

odpovede:

4 pre odpoveď č. 1

Na % prevádzkovateľ je zvyšok operátor, nie modul. fmod funkcia je tiež plávajúcou desatinnou čiarkou zvyšok, nie modulo. V tomto prípade si zvolili, že zaokrúhlia -4/5 na 0 na celé číslo.


1 pre odpoveď č. 2

POSIX stavy:

    #include <math.h>
double fmod(double x, double y);

Tieto funkcie musia vrátiť hodnotu x - i * ypre niektoré celé číslo i také, ak y je nenulový, výsledok má rovnaký znak ako x a menšia ako veľkosť y.

V prípade fmod(-4,5), pretože výsledok musí mať rovnakú veľkosť. \ t xbude záporná a i nemôže byť menšia ako nula. ak i by mal byť jeden, výsledok by bol väčší ako y, tak i musí byť nula a výsledok -4.0 je správne.