Newsgroup: it.comp.lang.c
Titolo: operatore modulo con floating point

Arieccomi! :) Toglietemi una curiosità: ma con i floating point l'operatore
modulo non va, oppure va usato in modo diverso che con gli interi. Quando
uso l'operatore modulo con gli interi, tutto ok, ma se cambio le
specifiche, ecc, ecc, in float o double il compilatore mi dice "invalid
operands to binary %". Perchè? O forse il compilatore vuole dirmi un'altra
cosa?

behemoth wrote:

Mi dispiace, ma non lo puoi fare, non puoi
usare nessun tipo di operatori binari come 
l'and, l'or, l'xor, il not, il modulo (%) ecc...
Devi trovarti la soluzione manualmente....
-- 
Vladislav Valtchev

 Devi trovarti la soluzione manualmente....
Pura curiosità: perchè? Perchè chi ha inventato il linguaggio o il
compilatore o chi non permette ciò non ha fatto in modo che si potesse
fare?

 wrote in message
news:juUta.97342$
DT4.2...@twister1.libero.it

Mai sentito parlare di fmod()? Fornisce il resto di un divisione tra
double.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 double.
Si... fmod()...ho cominciato con il c da nemmeno una settimana... :)

 ha scritto nel messaggio
news:USUta.97405$DT4.2...@twister1.libero.it...

L'operazione chiamata modulo calcola il resto della divisione intera tra
numeri interi, per definizione.
Quindi non si applica a numeri decimali, semplicemente.

vi è una differenza:
l'operatore modulo (%) è DEFINITO IN MATEMATICA come una operazione
effettuabile solo tra interi, e giustamente il compilatore C non la
applica a tipi diversi (come faceva notare qualcuno).
Se il problema è un altro allora giustamente qualcuno ha suggerito
fmod(), che è un'operazione che viene DEFINITA EX NOVO (cito dal
manuale in linea) come fmod(x,y)= x-trunc(x/y)*y che è la naturale
estensione del concetto di resto alla divisione fra interi.
(guarda il manuale in linea, ci sono varie funzioni che si applicano a
vari tipi)
Si parla di resto e di classi di resto modulo k finche si è
insiemisticamente confinati agli interi, ma appena si entra
nell'insieme dei reali il resto come concetto svanisce (e dal punto di
vista puramente matematico fmod() non è una funzione  molto
interessante), ma siccome le vie della programmazione sono infinite
può anche darsi che a qualcuno serva fare un'operazione che in
matematica ha poco senso.
Perche non hanno condensato tutto sull'operatore modulo?
Secondo me è perche i due concetti sono un po distanti ed hanno
preferito differenziare le modalità di eseguire queste due operazioni
per essere sicuri che la gente voglia fare esattamente quello che sta
scrivendo.
Un consiglio per Behemoth: le funzioni intrinseche pensale sempre come
scatole nere: preoccupati di cosa gli metti dentro, di cosa
restituiscono e basta, un principiante può usare tranquillamente tutta
la libreria e non c'è niente di cui preoccuparsi se non di evitare dei
type mismatch.
(mi è capitato che il problema sia in una funzione di libreria ma per
funzioni relativamente semplici non ci dovrebbero essere mai problemi)
ciao

 applica a tipi diversi (come faceva notare qualcuno).
Perfetto, proprio questo volevo sapere, se c'era una ragione matematica (in
cui sono una sega...) o riguarda compilatore o altro.
Grazie cmq a tutti e grazie dei consigli!