![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 7 Dołączył: 3.08.2007 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Utknąłem nad pewnym problemem, pewnie banalnym dla wielu tu obecnych. Mam liczby, dla których chcę zrobić operację zaokrąglania, jeżeli druga liczba po przecinku jest 1-4 wtedy zaokrąglenie w górę, a od 5-9 zaokrąglenie w dół. Przykład: 35.04 => 35.10 17.59 => 17.50 Funkcją round(); nie bardzo mi to wychodzi. Jak to sprytnie ogarnąć? Ten post edytował slawek3422 6.08.2021, 12:17:40 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zaspokoisz moja ciekawosc i odpowiesz mi czemu chcesz zrobic odwrotnie niz logika wskazuje?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 7 Dołączył: 3.08.2007 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, choć temat jest mocno zawiły.
Właściwie to istnieje jeszcze jeden wariant którego nie ogarniam a jest najczęściej stosowany mianowicie dla cyfr 1-3 zaokrąglamy w dół a 4-9 w górę. A oto wytłumaczenie. Jeżeli chciałbyś od naszego wspaniałego rządu zakupić dwie mapy to zapłaciłbyś np. 17,52zł/szt. 17,52 * 2 = 35,04 Nie zapłacił byś 35,04 a gołe 35zł, Państwo idzie Ci na rękę ![]() Teraz trzeba wystawić jakiś dokument księgowy i teraz się zaczyna cała jazda. W dokumencie widnieją dwa produkty po 17,52 co daje w sumie 35,04 a klient zapłacił 35zł więc gdzieś trzeba pokombinować żeby to się bilansowało. I tutaj przychodzi powyższa reguła, dla drugiego miejsca po przecinku zaokrąglamy w dół i wtedy będzie 2x17,50 = 35. Klient zadowolony, księgowa zadowolona ![]() Bardziej by mi nawet zależało, żeby ogarnąć ten przypadek niż ten z pierwszego posta. Ten post edytował slawek3422 6.08.2021, 12:29:56 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dalej nie kumam tej ksiegowej zaleznosci ale ja nie ksiegowy wiec nie wnikam...
No to uzyj ceil() lub floor() w zaleznosci od tego co na koncu. A to co na koncu to mozesz sprawdzic poprzez zrzutowanie liczby na string i pobranie ostatniego znaku z tego stringa. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wypróbuj tak:
Działa to tak, że zaokrąglana jest odwrotność frakcji dziesiętnej. Dla 0.02 zaokrąglane jest 0.08, dla 0.1 zaokrąglane jest 0.9. Poprawka:
Ten post edytował trueblue 7.08.2021, 14:20:42 -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale wiesz że to co chcesz "zrobić" podpada pod przestępstwo skarbowe? To taka dygresja
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 00:24 |