![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
Hej,
sfrustrowany dzisiaj zachowaniem funkcji round() której zaokrąglanie half up i half down nie jest tym, za co się podaje, spłodziłem klasę, która robi to poprawnie. Zawiera interfejs oraz domyślną implementację zaokrąglacza, druga implementacja (oparta na bcmath) właśnie się tworzy (co do tego, macie jakiś pomysł na implementację metod roundHalfEven() i roundHalfOdd() w Pamil\Rounder\BcmathRounder w gałęzi bcmath-support?). Przykład użycia i kod na GitHubie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Cytat sfrustrowany dzisiaj zachowaniem funkcji round() której zaokrąglanie half up i half down nie jest tym, za co się podaje Możesz podać przykład niepoprawnego działania? Sprawdziłem i u mnie zachowywała się normalnie. Przejrzałem Twoje testy i wskazują one na to, że błędnie rozumujesz zaokrąglanie w górę i dół. Chodzi o to, że zaokrągla się wartość bezwzględną, tzn. tak, żeby było od zera w kierunku nieskończoności (dodatniej lub ujemnej). Co zresztą objaśnione jest w dokumentacji: Cytat Round val up to precision decimal places away from zero, when it is half way there. Making 1.5 into 2 and -1.5 into -2. Jeśli chodzi o ten przypadek to funkcja działa zgodnie z opisem. Ten post edytował destroyerr 31.12.2013, 12:49:45 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 21:01 |