I need to mimic the exact functionality of the ceil(), floor() and round() functions on bcmath numbers, I've already found a very similar question but unfortunately the answer provided isn't good enough for me since it lacks support for negative numbers and the precision argument for the round() function is missing.
I was wondering if anyone can come up with a rather short and elegant solution to this problem.
All input is appreciated, thanks!
After a night lost trying to solve this problem I believe I've found a rather simple solution, here it is:
I think I didn't miss anything, if someone can spot any bug please let me know. Here are some tests: