Dwa pytania z teorii

0
  1. Dlaczego jak we floacie pomnożę 1/10 * 1 000 000 to nie dostane 100 000?
  2. Stos – które wywołanie funkcji jest najszybsze?
3
  1. poczytaj o precyzji w liczbach zmienno przecinkowych @kaczus napisal na ten temat artykul na swojej stronie
  2. ze co?
0
  1. bez jej wywoływania - inline. A tak na prawdę to nie wiadomo bo zależy to od implementacji
2

1:

(1/10/*tutaj masz 0*/)*1000000/*tutaj też masz 0*/ 
1
  1. 1./10*1000000
  2. Jeżeli próbujesz coś optymalizować, to zostaw w spokoju konwencje wywołania i optymalizuj co trzeba.
0

@forqed podaj kod

0
float a=1/10*1000000;//0
float b=1;
b/=10;
b*=1000000;//100000 
0

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ć...

4

@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.

0

@forqed http://4programmers.net/Forum/1222300 1
jeżeli kompletnie nie chcesz zmieniać kodu: http://4programmers.net/Forum/1222283

0

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...

1 użytkowników online, w tym zalogowanych: 0, gości: 1