Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- echo ceil(31497230840470473074370324734723042.6);
- // Expected result
- 31497230840470473074370324734723043
- // Prints
- <garbage>
- $x = '31497230840470473074370324734723042.9';
- bcscale(100);
- var_dump(bcFloor($x));
- var_dump(bcCeil($x));
- var_dump(bcRound($x));
- function bcFloor($x)
- {
- $result = bcmul($x, '1', 0);
- if ((bccomp($result, '0', 0) == -1) && bccomp($x, $result, 1))
- $result = bcsub($result, 1, 0);
- return $result;
- }
- function bcCeil($x)
- {
- $floor = bcFloor($x);
- return bcadd($floor, ceil(bcsub($x, $floor)), 0);
- }
- function bcRound($x)
- {
- $floor = bcFloor($x);
- return bcadd($floor, round(bcsub($x, $floor)), 0);
- }
- function bcceil($number)
- {
- if ($number[0] != '-')
- {
- return bcadd($number, 1, 0);
- }
- return bcsub($number, 0, 0);
- }
- function bcfloor($number)
- {
- if ($number[0] != '-')
- {
- return bcadd($number, 0, 0);
- }
- return bcsub($number, 1, 0);
- }
- function bcround($number, $precision = 0)
- {
- if ($number[0] != '-')
- {
- return bcadd($number, '0.' . str_repeat('0', $precision) . '5', $precision);
- }
- return bcsub($number, '0.' . str_repeat('0', $precision) . '5', $precision);
- }
- assert(bcceil('4.3') == ceil('4.3')); // true
- assert(bcceil('9.999') == ceil('9.999')); // true
- assert(bcceil('-3.14') == ceil('-3.14')); // true
- assert(bcfloor('4.3') == floor('4.3')); // true
- assert(bcfloor('9.999') == floor('9.999')); // true
- assert(bcfloor('-3.14') == floor('-3.14')); // true
- assert(bcround('3.4', 0) == number_format('3.4', 0)); // true
- assert(bcround('3.5', 0) == number_format('3.5', 0)); // true
- assert(bcround('3.6', 0) == number_format('3.6', 0)); // true
- assert(bcround('1.95583', 2) == number_format('1.95583', 2)); // true
- assert(bcround('5.045', 2) == number_format('5.045', 2)); // true
- assert(bcround('5.055', 2) == number_format('5.055', 2)); // true
- assert(bcround('9.999', 2) == number_format('9.999', 2)); // true
Add Comment
Please, Sign In to add comment