- Dlaczego jak we floacie pomnożę 1/10 * 1 000 000 to nie dostane 100 000?
- Stos – które wywołanie funkcji jest najszybsze?
- poczytaj o precyzji w liczbach zmienno przecinkowych @kaczus napisal na ten temat artykul na swojej stronie
- ze co?
- bez jej wywoływania - inline. A tak na prawdę to nie wiadomo bo zależy to od implementacji
1:
(1/10/*tutaj masz 0*/)*1000000/*tutaj też masz 0*/
-
1./10*1000000
- Jeżeli próbujesz coś optymalizować, to zostaw w spokoju konwencje wywołania i optymalizuj co trzeba.
@forqed podaj kod
float a=1/10*1000000;//0
float b=1;
b/=10;
b*=1000000;//100000
Ehh, nie pamiętam kodu, ale po operacji 1/10 * 1000000 można otrzymać liczbę zbliżoną do 100000. Jak ktoś zna odpowiedź na to pytanie, mógłby się to wiedzą podzielić...
@forqed ech liczba 0.1 jest ułamkiem okresowym w systemie o podstawie 2.
Twoje pytanie jest równoważne pytaniu: dlaczego jak zrobie 3*0.(3) to nie wyjdzie mi 1 tylko 0.99999999....
Komputer zwyczajnie nie potrafi zapisać liczby 0.1 dokładnie na skończonej liczbie bitów jaką ma na reprezentacje tej liczby, w efekcie zapisuje tyle ile może, a to będzie za mało.
@forqed http://4programmers.net/Forum/1222300 1
jeżeli kompletnie nie chcesz zmieniać kodu: http://4programmers.net/Forum/1222283
Może odpowiem tak: nie znam się na programowaniu, ale to mój przechodni przedmiot na studiach, którego muszę znać podstawy. Mam kilka pytań na które nie potrafię sobie odpowiedź - pytam na forum o tematyce programistycznej. Oczekuję odpowiedzi prostej, bez zadawania kolejnych pytań. Wybaczcie, ale jeżeli ktoś nie zna odpowiedzi to nie jest zmuszony do jakiejkolwiek odpowiedzi. Wydaje mi się, że @Shalom odpowiedział dobrze na moje pytanie, takiej formy oczekwiałem.
Ja jestem tylko biednym studentem, który chcę przebrnąć przez ten przedmiot i nie mam czasu na analizowanie artykułów itp. Sesja...