Skoro "round" zaokrągla liczbę w sposób matematyczny to dlaczego nie ma liczb po przecinku tylko do pełnych liczb zaokrągla? Nie ogarniam. Skoro jest zaokrąglenie w sposób matematyczny to liczbę 13.456 powinno mi zaokrąglić do 13.46, tak? a pokazuje 13.
Zaokrągla do pełnych, bo tak jest zdefiniowany. Ciężko tutaj więcej powiedzieć.
Skoro jest zaokrąglenie w sposób matematyczny to liczbę 13.456 powinno mi zaokrąglić do 13.46, tak?
Tylko jeśli zaokrąglasz do 2 cyfr po przecinku / 4 znaczących w ogóle.
Może taki kontrargument przyjmiesz: jak "zaokrąglisz" w "sposób matematyczny" poniższą liczbę?
No rzeczywiście, bo widzę, że trunc, ceil oraz floor też zaokrąglają do pełnych w zależności o czym mówimy góra/dól. No a jeżeli moją liczbę chciałbym zaokrąglić do dwóch po przecinku to z czego powinienem skorzystać?
Możesz pomnożyć przez 100, zaokrąglić, podzielić wynik. Ale z reguły najlepszym rozwiązaniem jest nie zaokrąglać w ogóle i robić to dopiero wypisując liczbę do stringa (lub np. wyjścia standardowego)
Czyli moją liczbę 13.456 mnożę przez 100 = 1345.6 - zaokrąglam w górę np. przy pomocy ceil i dostaję 1346 i dzielę przez 100 i dostaję 13.46, dobrze rozumiem? To samo zadziała, jeśli liczba przed przecinkiem będzie trzycyfrowa, czterocyfrowa itd ? :)
Ps. Co masz na myśli pisząc wyjdzie standardowe lub string? string to jest chyba do napisów, więc co liczby mają do tego?
Dziękuję.
Chodzi mi właśnie o to, że dość rzadko potrzebujesz zaokrąglać w innych kontekstach niż przekazanie użytkownikowi wartości w sensownym formacie. Jeśli chcesz więcej (n
) cyfr po przecinku to mnóż i dziel przez pow(10, n)
Przy czym pamiętaj, że liczby zmiennoprzecinkowe wciąż reprezentowane są binarnie i np. 0.15
nie jest skończenie reprezentowalne.
Zadaj sobie pytanie, po co chcesz zaokrąglać liczbę do dwóch miejsc? Żeby wyświetlić ją z dwoma miejscami?
No to nie zaokrąglaj, tylko użyj odpowiedniego formatu podczas wypisywania liczby. A to już zależy od tego, za pomocą jakiej funkcji ją konwertujesz na tekst i wyświetlasz.
Muszę w każdym obliczeniu od razu liczbę zaokrąglić, próbuję napisać pewną rzecz i jeżeli od razu nie zaokrąglam to w końcu wychodzi mi liczba, która nie zgadza się z liczbą, która powinna wyjść. Dlatego tak jest, że jest dużo mnożenia przez procenty, mnożenie wcześniej otrzymanych wyników i okazuje się, że z liczba, która ma 2 liczby po przecinku w końcu pojawia mi się liczba, która ma 3 liczby po przecinku a nie może tak być, że sam wynik zaokrąglam tylko każde wcześniejsze wyliczenie również muszę.
Dostałeś już odpowiedź. Mnożysz przez 100, zaokrąglasz do całkowitej, dzielisz przez 100.
Zajrzyj sobie tutaj