Search code examples
phpalgorithmmathsignificant-digits

How to round down to the nearest significant figure in php


Is there any slick way to round down to the nearest significant figure in php?

So:

0->0
9->9
10->10
17->10
77->70
114->100
745->700
1200->1000

?


Solution

  • $numbers = array(1, 9, 14, 53, 112, 725, 1001, 1200);
    foreach($numbers as $number) {
        printf('%d => %d'
                , $number
                , $number - $number % pow(10, floor(log10($number)))
                );
        echo "\n";
    }
    

    Unfortunately this fails horribly when $number is 0, but it does produce the expected result for positive integers. And it is a math-only solution.