Search code examples
phpnumber-formatting

scientific notation to normal decimal output conversion


First of all, I have tried a lot to find exactly the same question but failed. There were similar solutions and solutions that looks nice but not for me.

In PHP, I want to convert(or properly print out) a number to page with echo or something like that.

The input numbers may vary like that:

100000000

10

0.1

0.0000000001

100000000.0000000001

They are retrieved from MySQL database. The field format is double

But, when I try to echo those numbers, small decimal number is printed with scientific notation

1E-11

I found out sprintf, number_format, stringfication, make (double), or (string) etc.. but they have some unwanted functions like below:

  1. rounding number
  2. redundant 0(zero) tailing : eg) 0.1 to 0.10000

I simply want to printout those number AS IS

and without redundant processes. (like convert to decimal format by number_format followed by making it string then remove zero tailings)

How can I make it?


Solution

  • I found a way to do it myself and I am posting a quick answer.

    function realval($v) {
        $f = (string)number_format($v, 10, '.', ''); // 10000.0000010000
        if(strpos($f, '.') !== false) { // if it's a decimal (if not, print as is)
            $f = rtrim($f, "0"); // 10000.000001
            $f = rtrim($f, "."); // to prevent 10000. like things. 
        }
        return $f; // string format
    }
    

    This does what I needed. I wanted a more decent way to do so, but not figured out yet.