jessicakennedy1028 icon

Decimal to Fraction

jessicakennedy1028 | PRO | 09/09/18 01:29:28 PM UTC | 0 ⭐ | 348 👁️ | Never ⏰ | []
PHP |

950 B

|

None

|

0 👍

/

0 👎

function decimal_to_fraction($float) {
    $float = clean_number($float);
    $whole = floor($float);
    $decimal = $float - $whole;
    $leastCommonDenom = 384; // 128 * 3;
    $denominators = array (2, 3, 4, 8, 16, 24, 48, 64, 128);
    $roundedDecimal = round ($decimal * $leastCommonDenom) / $leastCommonDenom;
    if ($roundedDecimal == 0) return $whole;
    if ($roundedDecimal == 1) return $whole + 1;
    foreach ( $denominators as $d ) {
        if ($roundedDecimal * $d == floor ($roundedDecimal * $d)) {
            $denom = $d;
            break;
        }
    }
    return ($whole == 0 ? '' : $whole) . " " . ($roundedDecimal * $denom) . "/" . $denom;
}
 
/* Example */
    echo decimal_to_fraction(.5).'<br />';
    echo decimal_to_fraction(.25).'<br />';
    echo decimal_to_fraction(.75).'<br />';
    echo decimal_to_fraction(.125).'<br />';
    echo decimal_to_fraction(.3046875).'<br />';
 
/* Output */
1/2
1/4
3/4
1/8
39/128

Comments