Converting float decimal to fraction

前端 未结 6 875
粉色の甜心
粉色の甜心 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:09

    Continued fractions can be used to find rational approximations to real numbers that are "best" in a strict sense. Here's a PHP function that finds a rational approximation to a given (positive) floating point number with a relative error less than $tolerance:

     $n*$tolerance);
    
        return "$h1/$k1";
    }
    
    printf("%s\n", float2rat(66.66667)); # 200/3
    printf("%s\n", float2rat(sqrt(2)));  # 1393/985
    printf("%s\n", float2rat(0.43212));  # 748/1731
    

    I have written more about this algorithm and why it works, and even a JavaScript demo here: https://web.archive.org/web/20180731235708/http://jonisalonen.com/2012/converting-decimal-numbers-to-ratios/

提交回复
热议问题