PHP Math Exercises: Round a float away from zero to a specified number of decimal places
Write a PHP function to round a float away from zero to a specified number of decimal places.
Sample Data :
(78.78001, 2)
(8.131001, 2)
(0.586001, 4)
(-.125481, 3)
-.125481
Sample Solution:
PHP Code:
<?php
function roundout($value, $places = 0) {
if ($places < 0) {
$places = 0; // Ensure places is non-negative
}
$x = pow(10, $places); // Calculate the multiplier
// Round the value based on its sign and the multiplier, then divide by the multiplier
return ($value >= 0 ? ceil($value * $x) : floor($value * $x)) / $x;
}
// Test the roundout function with different values and precision
echo roundout(78.78001, 2) . "\n";
echo roundout(8.131001, 2) . "\n";
echo roundout(0.586001, 4) . "\n";
echo roundout(-0.125481, 3) . "\n";
echo roundout(-0.125481);
?>
Output:
78.79 8.14 0.5861 -0.126 -1
Explanation:
In the exercise above,
- 'function roundout($value, $places = 0) {': This line defines a function named 'roundout' that takes two parameters: '$value' (the number to be rounded) and '$places' (the number of decimal places to round to, defaulting to 0 if not provided).
- 'if ($places < 0) { $places = 0; }': This line ensures that the number of decimal places is non-negative. If '$places' is less than 0, it is set to 0.
- '$x = pow(10, $places);': This line calculates the multiplier '$x' by raising 10 to the power of the number of decimal places.
- 'return ($value >= 0 ? ceil($value $x) : floor($value $x)) / $x;': This line rounds the value based on its sign and the multiplier '$x'. If '$value' is non-negative, it is rounded up using 'ceil()'; otherwise, it is rounded down using 'floor()'. The result is then divided by the multiplier to obtain the rounded value.
- The subsequent 'echo' statements test the 'roundout' function with different input values and precision levels, and display the rounded results.
Flowchart :
PHP Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous: Find earliest and latest dates from a list of dates.
Next: Write a PHP function to convert Arabic numbers to Roman numerals.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics