fork(1) download
  1. <?php
  2.  
  3. function formatFloat($value)
  4. {
  5. if ($value == 0.0) return '0.0';
  6.  
  7. $decimalDigits = max(
  8. 13 - floor(log10(abs($value))),
  9. 0
  10. );
  11.  
  12. $formatted = number_format($value, $decimalDigits);
  13.  
  14. // Trim excess 0's
  15. $formatted = preg_replace('/(\.[0-9]+?)0*$/', '$1', $formatted);
  16.  
  17. return $formatted;
  18. }
  19.  
  20. $randomFloats = array();
  21.  
  22. for ($i = 0; $i < 200; $i++) {
  23. $float = mt_rand() / mt_getrandmax();
  24. $float = round($float, mt_rand(0, 15));
  25. $float *= pow(10, mt_rand(-25, 25));
  26. $randomFloats[] = $float;
  27. }
  28.  
  29. sort($randomFloats);
  30.  
  31. foreach ($randomFloats as $float) {
  32. echo sprintf('%20s', $float) . " --> " . formatFloat($float) . "\n";
  33. }
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
                   0 --> 0.0
                   0 --> 0.0
                   0 --> 0.0
          1.1112E-26 --> 0.000000000000000000000000011112
          4.1063E-26 --> 0.000000000000000000000000041063
             6.7E-26 --> 0.000000000000000000000000067
    7.0784457061E-26 --> 0.000000000000000000000000070784457061
        7.674181E-26 --> 0.00000000000000000000000007674181
             8.0E-26 --> 0.00000000000000000000000008
             8.3E-26 --> 0.000000000000000000000000083
         4.14676E-25 --> 0.000000000000000000000000414676
            9.18E-25 --> 0.000000000000000000000000918
   4.94652312014E-24 --> 0.00000000000000000000000494652312014
      5.75807531E-24 --> 0.00000000000000000000000575807531
      2.20488496E-23 --> 0.0000000000000000000000220488496
         3.10043E-23 --> 0.0000000000000000000000310043
            3.74E-23 --> 0.0000000000000000000000374
     6.269753201E-23 --> 0.00000000000000000000006269753201
 8.0741693163636E-23 --> 0.000000000000000000000080741693163636
 9.6835610175894E-23 --> 0.000000000000000000000096835610175894
    5.5222514903E-22 --> 0.00000000000000000000055222514903
 3.4659579458954E-21 --> 0.0000000000000000000034659579458954
     4.259881263E-20 --> 0.00000000000000000004259881263
      7.11728052E-20 --> 0.0000000000000000000711728052
         7.46543E-20 --> 0.0000000000000000000746543
  8.279422357809E-20 --> 0.00000000000000000008279422357809
             1.0E-19 --> 0.0000000000000000001
             1.2E-19 --> 0.00000000000000000012
   4.23465456079E-19 --> 0.000000000000000000423465456079
     6.870754169E-19 --> 0.0000000000000000006870754169
     7.401063734E-19 --> 0.0000000000000000007401063734
 8.0414705202177E-19 --> 0.00000000000000000080414705202177
             8.1E-19 --> 0.00000000000000000081
  8.843886204457E-19 --> 0.0000000000000000008843886204457
         1.22186E-18 --> 0.00000000000000000122186
         5.11176E-18 --> 0.00000000000000000511176
           6.855E-18 --> 0.000000000000000006855
     9.042698652E-18 --> 0.000000000000000009042698652
            1.77E-17 --> 0.0000000000000000177
        1.960637E-17 --> 0.00000000000000001960637
    6.0331218252E-17 --> 0.000000000000000060331218252
            7.89E-17 --> 0.0000000000000000789
     4.600368517E-16 --> 0.0000000000000004600368517
  2.281245706734E-15 --> 0.000000000000002281245706734
 4.2237365544884E-15 --> 0.0000000000000042237365544884
           4.542E-15 --> 0.000000000000004542
             6.0E-15 --> 0.000000000000006
    7.8333517014E-15 --> 0.0000000000000078333517014
        9.922816E-15 --> 0.000000000000009922816
  7.074790092686E-14 --> 0.00000000000007074790092686
 7.0803946848402E-14 --> 0.000000000000070803946848402
           7.735E-14 --> 0.00000000000007735
        7.871067E-14 --> 0.00000000000007871067
           1.112E-13 --> 0.0000000000001112
       2.2084759E-13 --> 0.00000000000022084759
      5.95197035E-13 --> 0.000000000000595197035
   1.94894156044E-12 --> 0.00000000000194894156044
         2.27828E-12 --> 0.00000000000227828
       7.3831226E-12 --> 0.0000000000073831226
 7.4147520016016E-12 --> 0.0000000000074147520016016
           1.811E-11 --> 0.00000000001811
    2.7941542597E-11 --> 0.000000000027941542597
        4.121817E-11 --> 0.00000000004121817
             4.6E-11 --> 0.000000000046
   7.23394469695E-10 --> 0.000000000723394469695
             1.88E-9 --> 0.00000000188
      3.987113737E-9 --> 0.000000003987113737
             5.65E-8 --> 0.0000000565
            9.233E-8 --> 0.00000009233
           2.3177E-7 --> 0.00000023177
    3.35260818403E-7 --> 0.000000335260818403
     4.2514839788E-7 --> 0.00000042514839788
             5.24E-7 --> 0.000000524
        1.4064488E-6 --> 0.0000014064488
            3.053E-6 --> 0.000003053
          5.05285E-6 --> 0.00000505285
          6.57809E-6 --> 0.00000657809
            1.392E-5 --> 0.00001392
           1.7339E-5 --> 0.000017339
  6.2840661622044E-5 --> 0.000062840661622044
    8.29131435523E-5 --> 0.0000829131435523
     9.5512867251E-5 --> 0.000095512867251
     0.0002329778863 --> 0.0002329778863
       0.00032637023 --> 0.00032637023
              0.0006 --> 0.0006
    0.00062982599467 --> 0.00062982599467
            0.000784 --> 0.000784
        0.0009615209 --> 0.0009615209
        0.0024472368 --> 0.0024472368
         0.002881074 --> 0.002881074
  0.0029494291324864 --> 0.0029494291324864
        0.0036527971 --> 0.0036527971
       0.00448346477 --> 0.00448346477
         0.005683177 --> 0.005683177
          0.00689119 --> 0.00689119
           0.0092763 --> 0.0092763
     0.0383034523755 --> 0.0383034523755
    0.06733395125127 --> 0.06733395125127
          0.09469099 --> 0.09469099
                 0.6 --> 0.6
       0.96024703186 --> 0.96024703186
           4.4841564 --> 4.4841564
                5.39 --> 5.39
               21.46 --> 21.46
                  40 --> 40.0
     52.737605130643 --> 52.737605130643
                  57 --> 57.0
                  60 --> 60.0
      61.89757905058 --> 61.89757905058
              84.871 --> 84.871
      92.06141070093 --> 92.06141070093
        504.82184184 --> 504.82184184
       872.282152005 --> 872.282152005
            2428.459 --> 2,428.459
           4758.0583 --> 4,758.0583
                5198 --> 5,198.0
        5228.1308198 --> 5,228.1308198
             7480.08 --> 7,480.08
     9563.0531010977 --> 9,563.0531010977
               65000 --> 65,000.0
               96000 --> 96,000.0
              100000 --> 100,000.0
              250000 --> 250,000.0
              365000 --> 365,000.0
            455594.5 --> 455,594.5
     718593.28621933 --> 718,593.28621933
      2519606.613796 --> 2,519,606.613796
         4489367.411 --> 4,489,367.411
             9744507 --> 9,744,507.0
            10000000 --> 10,000,000.0
            23900000 --> 23,900,000.0
            48000000 --> 48,000,000.0
       321057621.539 --> 321,057,621.539
           341154039 --> 341,154,039.0
       382317065.905 --> 382,317,065.905
           900000000 --> 900,000,000.0
      1766770110.357 --> 1,766,770,110.357
          3816038167 --> 3,816,038,167.0
     6727898394.0966 --> 6,727,898,394.0966
          7100000000 --> 7,100,000,000.0
     45324413685.745 --> 45,324,413,685.745
         45780000000 --> 45,780,000,000.0
         47900000000 --> 47,900,000,000.0
     68005791477.862 --> 68,005,791,477.862
         81000000000 --> 81,000,000,000.0
        600000000000 --> 600,000,000,000.0
        645463705800 --> 645,463,705,800.0
        934600000000 --> 934,600,000,000.0
       4408440149580 --> 4,408,440,149,580.0
       8323453035360 --> 8,323,453,035,360.0
     9227205649589.8 --> 9,227,205,649,589.8
      13982000000000 --> 13,982,000,000,000
      31188400000000 --> 31,188,400,000,000
      42655510242400 --> 42,655,510,242,400
      49760000000000 --> 49,760,000,000,000
      67374469977000 --> 67,374,469,977,000
      70000000000000 --> 70,000,000,000,000
      73747104000000 --> 73,747,104,000,000
      92000000000000 --> 92,000,000,000,000
             1.0E+14 --> 100,000,000,000,000
             1.0E+14 --> 100,000,000,000,000
     1.921238742E+14 --> 192,123,874,200,000
    2.8962386832E+14 --> 289,623,868,320,000
          4.0488E+14 --> 404,880,000,000,000
   7.65758185073E+14 --> 765,758,185,073,000
            8.78E+14 --> 878,000,000,000,000
   9.75816223293E+14 --> 975,816,223,293,000
           1.922E+15 --> 1,922,000,000,000,000
         2.75413E+15 --> 2,754,130,000,000,000
          7.3344E+15 --> 7,334,400,000,000,000
  7.804118179625E+15 --> 7,804,118,179,625,000
             8.5E+15 --> 8,500,000,000,000,000
 9.5600458046235E+15 --> 9,560,045,804,623,540
    1.3711395307E+16 --> 13,711,395,306,999,998
  2.545199074105E+16 --> 25,451,990,741,049,900
         4.60446E+16 --> 46,044,600,000,000,000
          8.5647E+16 --> 85,647,000,000,000,000
     8.695998708E+16 --> 86,959,987,080,000,000
        2.163512E+17 --> 216,351,200,000,000,000
            6.58E+17 --> 658,000,000,000,000,000
   8.21678501005E+17 --> 821,678,501,004,999,936
             9.0E+17 --> 900,000,000,000,000,000
     4.659781761E+18 --> 4,659,781,760,999,999,488
      4.81165583E+18 --> 4,811,655,830,000,000,000
       5.0779334E+18 --> 5,077,933,400,000,000,000
             5.1E+18 --> 5,100,000,000,000,000,000
             5.6E+18 --> 5,600,000,000,000,001,024
          7.0828E+18 --> 7,082,800,000,000,000,000
      7.59141656E+18 --> 7,591,416,560,000,001,024
   9.50156341284E+18 --> 9,501,563,412,839,999,488
     3.548577895E+19 --> 35,485,778,950,000,001,024
             7.0E+19 --> 69,999,999,999,999,991,808
             3.0E+20 --> 300,000,000,000,000,000,000
    3.2404947156E+20 --> 324,049,471,560,000,012,288
 8.5446758840907E+21 --> 8,544,675,884,090,679,885,824
             1.0E+22 --> 10,000,000,000,000,000,000,000
      5.65792685E+22 --> 56,579,268,499,999,993,888,768
       7.1129566E+22 --> 71,129,565,999,999,997,706,240
       4.0600238E+23 --> 406,002,380,000,000,013,762,560
           7.156E+23 --> 715,599,999,999,999,945,474,048