<?php

function formatFloat($value)
{
    if ($value == 0.0)  return '0.0';

    $decimalDigits = max(
        13 - floor(log10(abs($value))),
        0
    );

    $formatted = number_format($value, $decimalDigits);

    // Trim excess 0's
    $formatted = preg_replace('/(\.[0-9]+?)0*$/', '$1', $formatted);

    return $formatted;
}

$randomFloats = array();

for ($i = 0; $i < 200; $i++) {
    $float  = mt_rand() / mt_getrandmax();
    $float  = round($float, mt_rand(0, 15));
    $float *= pow(10, mt_rand(-25, 25));
    $randomFloats[] = $float;
}

sort($randomFloats);

foreach ($randomFloats as $float) {
    echo sprintf('%20s', $float) . " --> " . formatFloat($float) . "\n";
}