De ce codul urmator nu imi da nr=2.88 ci 2.89?
double nr=0.9*3.2;
nr*=100;
nr=ceil(nr);
nr/=100;
cout<<nr<<endl;
Cum pot sa fac rotunjirea in plus a unui numar cu 2 zecimale? (Ex. rotunjire 42.4243 sa fie 42.43).
Codul e in vc++.
Intrebare
- Silviu Ardelean
- Senior
- Posts: 1175
- Joined: 12 Jul 2007, 09:22
- Judet: Timiş
- Location: Timisoara
- Contact:
Re: Intrebare
E firesc, ca rotunjind valoarea 42.4243 vei obtine la rotunjirea cu doua zecimale 42.42. Poate nu ar strica sa te uitzi putin printr-un manual de aritmetica.imnikey wrote:Ex. rotunjire 42.4243 sa fie 42.43
Daca in loc de 42.4243 aveai 42.4256 atunci, rotunjund la doua zecimale, aveai rezultatul dorit. Daca a 3-a zecimala e minim 5 atunci rotunjirea se face in sus si vei obtine 42.43, altfel rotunjirea se face in jos.
Last edited by Silviu Ardelean on 01 Jun 2008, 20:23, edited 1 time in total.
- Marius Bancila
- Fondator
- Posts: 2344
- Joined: 11 Jul 2007, 11:45
- Judet: Timiş
- Location: Timisoara
- Contact:
Re: Intrebare
Well, nu trebuie sa fie neaparat o lege a matematicii.
Poate sa fie de exemplu o regula din domeniul financiar.

-
- Membru++
- Posts: 789
- Joined: 11 Jul 2007, 14:11
Re: Intrebare
Daca vreui sa rotunjesti in sus la intreg atunci poti face asa : x = f + 0.5 ( unde f e valoarea reala)imnikey wrote:Cum pot sa fac rotunjirea in plus a unui numar cu 2 zecimale? (Ex. rotunjire 42.4243 sa fie 42.43).
Codul e in vc++.
In general, daca vrei sa rotunjesti in sus la o anumita zecimala aduni 5^10-n unde n e indexul zecimalei dorite.
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Intrebare
In general, in C/C++, daca vrei rotunjire corecta la a-N-a zecimala nu te bazezi nici pe float nici nici pe double.
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
-
- Membru++
- Posts: 789
- Joined: 11 Jul 2007, 14:11
Re: Intrebare
Te referi la numere reprezentate ca array-uri? Eu am dat solutia in cazul in care ai numarul real intr-un tip de baza real.Ovidiu Cucu wrote:In general, in C/C++, daca vrei rotunjire corecta la a-N-a zecimala nu te bazezi nici pe float nici nici pe double.
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: Intrebare
N-am zis ca nu-i deloc OK.
Mi-am amintit doar de o socoata ce o facusem eu si un coleg mai demult cand lucram la o aplicatie financiara. Daca am fi bagat un mic bug care sa "fure" din fiecare tranzactie sa zicem la a patra zecimala si sa "depuna" intr-un anumit cont... Bineiteles pana la urma s-ar fi descoperit toata tarasenia dar ar fi luat intre doua si trei zile lucratoare timp suficient sa retragem o valiza cu euroi si sa disparem pe undeva printr-o insula cu clima blanda, femei frumoase si fara tratat de extradare cu EU.
Ce am vrut sa spun e ca nu te poti baza pe float nici pe double cand e vorba de acuratete la zecimale. Sunt sigur ca stii si tu ca "fura" singure, din cauza reprezentarii.
// povestea de mai sus a fost o gluma; copii, nu faceti asta acasa si, va rog, nu chemati Interpolul!
[ later edit ]
Pentru cine vrea sa afle mai multe despre reprezentari (virgula mobila s.a.m.d.) si problemele legate de acestea, recomand cu caldura Arta programarii calculatoarelor(vol.2, Algoritmi seminumerici) a lui Knuth.
Mi-am amintit doar de o socoata ce o facusem eu si un coleg mai demult cand lucram la o aplicatie financiara. Daca am fi bagat un mic bug care sa "fure" din fiecare tranzactie sa zicem la a patra zecimala si sa "depuna" intr-un anumit cont... Bineiteles pana la urma s-ar fi descoperit toata tarasenia dar ar fi luat intre doua si trei zile lucratoare timp suficient sa retragem o valiza cu euroi si sa disparem pe undeva printr-o insula cu clima blanda, femei frumoase si fara tratat de extradare cu EU.

Ce am vrut sa spun e ca nu te poti baza pe float nici pe double cand e vorba de acuratete la zecimale. Sunt sigur ca stii si tu ca "fura" singure, din cauza reprezentarii.
// povestea de mai sus a fost o gluma; copii, nu faceti asta acasa si, va rog, nu chemati Interpolul!

[ later edit ]
Pentru cine vrea sa afle mai multe despre reprezentari (virgula mobila s.a.m.d.) si problemele legate de acestea, recomand cu caldura Arta programarii calculatoarelor(vol.2, Algoritmi seminumerici) a lui Knuth.
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks