Ciao a tutti,
vi scrivo perche' ho un problema di cui non riesco proprio a venire a capo e mi sta facendo impazzire.
Devo fare la radice quadrata di un numero che e' un long long int,ma ogni volta che ci provo usando sqrt() mi da un risultato che non c'entra nulla.
Ho provato e riprovato con casting vari e conversioni di tipo della variabile ma non funziona mai.
Al momento il mio codice e' rimasto cosi,
long long int num=(long long int)sqrt((double)numero);
purtroppo ho il problema che il tipo double se non sbaglio e' meno grande di un long long,di conseguenza credo non riesca a convertire il mio long long in un double,e forse puo' essere quello a generare l'errore.
Avevo pensato di convertire il mio long long int in un long double(che dovrebbe essere grande abbastanza?)ma anche provando a convertire in un long double non funziona.
Ho continuato a documentarmi e ho trovato info riguardo a alcuni problemi del mio compilatore (dev-c++) con i long double,e riguardo al fatto che i long double sono stati implementati nella revisione C99 del c,ma niente di specifico per la risoluzione del mio problema.
Se sto facendo un errore logico io vi prego di aiutarmi a capire dove sbaglio,o magari se i miei ragionamenti sono giusti di provare a vedere se con compilatori diversi da' lo stesso errore.
Sono certo che tutti quelli di voi che mi risponderanno lo sapranno gia',ma per chiarezza nei confronti degli altri che magari come me brancolano un pochino nel buio aggiungo che il compilatore visual c++ della microsoft tratta i long double come normali double,quindi suppongo non funzionerebbe a priori.
Vi prego non ditemi che devo scrivermi una funzione longsqrt() apposita,mi metterei a piangere![]()

Rispondi quotando