Obecnie próbuję dowiedzieć się, jak pracować z arbitralnej precyzji liczb w PHP. Więc domyślam się, że moje pierwsze pytanie brzmi: czym dokładnie jest matematyczna precyzja. Próbowałem Googling dla dobrej definicji, ale z jakiegoś powodu nikt nie może umieścić go w dość prostych słów.Arbitralne-Precision Math w PHP
Po drugie, jakie są różnice między bibliotekami BCMath i GMP w PHP? Słyszałem, że API GMP jest "świeże", ale idk. Czy jest lepszy?
I moim ostatnim pytaniem będzie, jaki typ liczb ma BCMath/GMP. Oczywiście zajmuje normalne liczby całkowite w postaci ciągu (np. "5.34"), ale widziałem implementacje, w których funkcje BCMath były używane bezpośrednio z ciągami oktetów reprezentującymi zwykłe liczby całkowite (np. "\ X12 \ x23 \ x45 \ x67"), które ja "Słyszałem, że nazywa się" bigint ", ale znowu Google nic dla mnie nie dało.
Teoretycznie oba pozwalają numery dowolnej długości mają być stosowane, o ile są one wprowadzane do biblioteki jako ciągi. Sprowadza się to do tego, co ma lepsze API dla twoich celów. bc działa wyłącznie z ciągami, podczas gdy gmp może akceptować łańcuchy, ale używa również własnych wewnętrznych reprezentacji. –
Uwaga: do pracy z arbitralną precyzją arytmetyki można użyć biblioteki takiej jak [cegła/matematyka] (https://github.com/brick/math), która automatycznie używa GMP, BCMath, a nawet zwykłego PHP za kulisami , w zależności od dostępności każdego rozszerzenia. W ten sposób nie musisz wybierać pomiędzy GMP a BCMath i mieć przyjemny interfejs OO API do grania. – Benjamin