gpt4 book ai didi

php - 将 float 转换为分数

转载 作者:IT王子 更新时间:2023-10-29 00:08:15 25 4
gpt4 key购买 nike

我正在尝试将用户输入的具有小数结果的计算转换为分数。例如; 66.6666666667 变成 66 2/3。任何指针?提前致谢

最佳答案

Continued fractions可用于找到严格意义上“最佳”实数的有理近似值。这是一个 PHP 函数,它找到给定(正) float 的有理近似值,其相对误差小于 $tolerance:

<?php
function float2rat($n, $tolerance = 1.e-6) {
$h1=1; $h2=0;
$k1=0; $k2=1;
$b = 1/$n;
do {
$b = 1/$b;
$a = floor($b);
$aux = $h1; $h1 = $a*$h1+$h2; $h2 = $aux;
$aux = $k1; $k1 = $a*$k1+$k2; $k2 = $aux;
$b = $b-$a;
} while (abs($n-$h1/$k1) > $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

我已经写了更多关于该算法及其工作原理的文章,甚至还有一个 JavaScript 演示:https://web.archive.org/web/20180731235708/http://jonisalonen.com/2012/converting-decimal-numbers-to-ratios/

关于php - 将 float 转换为分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com