siccome non mi interessava una precisione a 6 decimali ma mi bastava anche a 3 o 4, ho aggirato il problema in questo modo:
- Codice: Seleziona tutto
while((Qan-Qnb) >= 0.0001 || (Qan-Qnb) <= 0.00001) {
...
if((Qan-Qnb) > 0)
Yn = Yn+0.01;
else if((Qan-Qnb) < 0)
Yn = Yn-0.01;
printf("deltaQ: %f\n", Qan-Qnb);
}
return Yn;
Ansa89 ha scritto:Moltiplica il numero da confrontare per 100 e convertilo a intero, poi lo confronti con zero.
anche questa era una soluzione, ma ho già fatto, grazie comunque
Ansa89 ha scritto:Comunque se il confronto fallisce vuol dire che almeno una cifra del numero da confrontare non è zero.
infatti, ma la cosa strana è che lo è una cifra fuori dal campo float perchè stampavo il confronto e risultava alternato (per via dei calcoli) 0.000000 e -0.000000
ps: sto scrivendo un programmino per progetto e verifica di lunghe condotte (idraulica), la funzione per le tubazioni in serie l'ho appena finita
