Titlul: Operatii ciudate cu numere zecimale Scris de: Alexandru-Iancu Caragicu din Februarie 01, 2011, 13:07:25 La urmatorul program:
Cod: #include <cstdio> Cod: a = 4.200000 Am observat ca pentru operatiile de expresii, tot scoate zecimale de 9 din nimic si nu muta virgula zecimala iar pt atribuiri functioneaza bine pt 10 si 1000 (dar pt 100 nu)... Titlul: Răspuns: Operatii ciudate cu numere zecimale Scris de: MciprianM din Februarie 01, 2011, 13:42:41 4.2 e fractie zecimala periodica in baza 2 asa ca nu scoate cifre de 9 din nimic... Vezi aici (http://en.wikipedia.org/wiki/Floating_point) si aici: aici (http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html). Si printf face niste aproximatii, sunt mai multe chestii pe acolo, dar nu e nimic anormal acolo. Asta e floating point arithmetic.
Titlul: Răspuns: Operatii ciudate cu numere zecimale Scris de: Robert Badea din Februarie 01, 2011, 23:00:04 Așa mă cruceam și eu când mă jucam cu preciziile.
Dacă puneam precizia de 4 sau mai puțin (parcă) îmi arăta bine, dar dacă puneam precizia mai mare umplea de 9. Parcă era ceva de genul: in: 3 out: 3.0000 //cu precizie 4 in: 3 out: 2.999999 //cu precizie 6 Titlul: Răspuns: Operatii ciudate cu numere zecimale Scris de: Alexandru-Iancu Caragicu din Februarie 02, 2011, 13:14:09 4.2 e fractie zecimala periodica in baza 2 asa ca nu scoate cifre de 9 din nimic... Vezi aici (http://en.wikipedia.org/wiki/Floating_point) si aici: aici (http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html). Si printf face niste aproximatii, sunt mai multe chestii pe acolo, dar nu e nimic anormal acolo. Asta e floating point arithmetic. Pai bine, dar de ce la atribuiri e cu totul altceva. Adica daca inmultesti cu 100 apar cifre "in plus", dar daca inmultesti de 2 ori cu 10 nu apar. E vreo alta metoda sa muti atunci virgula? |