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ď č. 1Na %
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 * y
pre niektoré celé čísloi
také, aky
je nenulový, výsledok má rovnaký znak akox
a menšia ako veľkosťy
.
V prípade fmod(-4,5)
, pretože výsledok musí mať rovnakú veľkosť. \ t x
bude 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.