![]() |
![]() |
![]()
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: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
@gitbejbe, trafiłeś w sedno, czas napisać coś, co usprawni obsługę dużych liczb, bo to funkcyjne API bcmath jest straszne, zwłaszcza gdy przychodzi do porównywania liczb.
@pyro, co do tej abstrakcji, w planach mam dodanie obsługi zaokrąglania dla dużych liczb (i to można wykonać za pomocą bcmath, lub własnego algorytmu, w każdym razie będzie to obsługa dużych liczb w postaci łańcuchów znaków, nie liczb). Interfejsy - dla swobodnego dodawania i wymieniania implementacji. Klasa abstrakcyjna - by nie pisać powtarzalnej metody round($number, $precision, $roundingMode) w implementacjach @destroyerr, nazwa tej stałej to "PHP_ROUND_HALF_UP", jest to zaokrąglanie od połowy w stronę pozytywnej nieskończoności. Funkcja działa zgodnie z opisem stałej, nie z nazwą stałej. Źródła: Zaokrąglanie od połowy w stronę pozytywnej nieskończoności Zaokrąglanie od połowy w stronę nieskończoności W pierwszym linku możemy przeczytać: Cytat However, some programming languages (such as Java) define HALF_UP as round half away from zero. To samo tyczy się PHP. Ten post edytował greycoffey 31.12.2013, 13:03:58 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 09:24 |