krotko i zwiezle !! czasem prostych rzeczy sie nie zauwaza :)) nie rozumiem tych dysput ponizej :) niektorzy nie doczytali mojego problemu :) dzieki wielkie
krotko i zwiezle !! czasem prostych rzeczy sie nie zauwaza :)) nie rozumiem tych dysput ponizej :) niektorzy nie doczytali mojego problemu :) dzieki wielkie
Aaa, racja! EOT - problem rozwiązany :) (spróbuję jeszcze znaleźć dziurę w całym).
Jeszcze mała wzmianka, w końcu udało mi się napisać tak, aby to pokazać:
#include <stdio.h>
unsigned int myround(double a) { return (unsigned int) (a+0.5); }
int main( void ) { float a=0.1, b=0.7; printf( "%d\n", myround( (a+b)*10+0.5 ) ); return 0; }
Ma to związek ze skończoną reprezentacją liczb, więc wychodzi 8, a nie
9, ale to już nie wina samej metody, która jest dobra. Niestety było mi stracić sporo czasu na takim właśnie problemie (zamiast 8 wychodziło 7.(9) ).Pozdrawiam.
U¿ytkownik "£ukasz Góralczyk" snipped-for-privacy@goraNOSPAMlczyk.com napisa³ w wiadomo¶ci news:cuvi80$e43$ snipped-for-privacy@nemesis.news.tpi.pl...
Znowu masz jakies zacmienie - 0.1 + 0.7 to jest 0.8 wiec dlaczego mialoby wyjsc 9?
Krzysiek Rudnik
(0.1+0.7)*10 da 7.(9), do tego dodac 0.5 wyjdzie 8.4(9), funkcja zaokragli to do 8 (tak liczy kompter). W rzeczywistosci powinno byc: (0.7+0.7)*10 da 8, do tego dodac 0.5 wyjdzie 8.5, to sie zaokragla do 9 (tak liczy matematyka).
PS.
7.(9) = 7.99999...
no bo 0.7 w komputerze nie ma dokładnej reprezentacji. Niestety na to trzeba zwracać uwagę.
A matematycznie to 7.(9) == 8
Waldek
Dnia 2/16/2005 6:52 PM, Użytkownik Łukasz Góralczyk napisał:
Hmmm, metody numeryczne miałem dawno ale z tego co pamiętam to
8.5 będzie się zaokrąglało do 8, w górę było by wtedy jak na dalszych nieznaczących pozycjach wystąpi coś > 0 (?)sword
Have something to add? Share your thoughts — no account required.
Ask the community — no account required