Converting float decimal to fraction

前端 未结 6 863
粉色の甜心
粉色の甜心 2020-12-05 15:32

I am trying to convert calculations keyed in by users with decimal results into fractions. For e.g.; 66.6666666667 into 66 2/3. Any pointers? Thanx in advance

6条回答
  •  無奈伤痛
    2020-12-05 16:08

    Converted Python code in answer from @APerson241 to PHP

     $mediant[0]) {
                if($lim < $mediant[1]) 
                    return $upper;
                $lower = $mediant;
            }
            else if($v * $mediant[1] == $mediant[0]) {
                if($lim >= $mediant[1])
                    return $mediant;
                if($lower[1] < $upper[1])
                    return $lower;
                return $upper;
            }
            else {
                if($lim < $mediant[1])
                    return $lower;
                $upper = $mediant;
            }
        }
    }
    
    // Example use:
    $f = farey(66.66667, 10);
    echo $f[0], '/', $f[1], "\n"; # 200/3
    $f = farey(sqrt(2), 1000);
    echo $f[0], '/', $f[1], "\n";  # 1393/985
    $f = farey(0.43212, 2000);
    echo $f[0], '/', $f[1], "\n";  # 748/1731
    

提交回复
热议问题