php有没有什么计算分数的好方法? 1/4+1/5=9/20,像这种几分之几的加减乘除用php程序有什么好的实现方法么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比较偷懒的做法是连接数据库,,,SELECT 1/4+1/5 AS result 我搜索来的,你看看是否有帮助php 小数转换百分数函数2007-06-13 19:39function xx($n) { return $n*100.'%'; } --------------------------------------------------------如果有小说位数有要求 可以用 sprintf("%01.2f", $n*100).'%'; --------------------------------------------------------楼上的sprintf很不错。 --------------------------------------------------------乘以100加上%就可以了 --------------------------------------------------------sprintf --------------------------------------------------------先 四舍五入,后转换 $str=round(5.055, 2); // 5.06 $str1=$str."%"; //5.06% --------------------------------------------------------sprintf("%01.2f", $n*100).'%'; --------------------------------------------------------sprintf("%01.2f", $n*100).'%' 首次看到这样的提问,不过应该可以写个函数,方法可以这样写,先用explode从分数线(/)进行分隔,分成a1,a2 b1,b2,四个数字,再算公倍数,a2*b2=c2,然后算出总的结果:(a1*b2+ a2*b1)/c2,假设得到的结果:d2/c2,再算公约。先判断分子大还是分母大,如果分母大,if(d2%c2==0){//$gy=d2/c2 //$gy就是公约。当然一定要除去1,因为大家知道1是任何数的公约数。};根据这个方法,自己写个类或函数是可以解决的。 大致的过程为:$s = '1/4+1/5';preg_match_all("#((\d+)/(\d+))([-+/*]*)#", $s, $reg);for($i=0; $i<count($reg[1]); $i++) { $d[] = array($reg[2][$i], $reg[3][$i]); $f[] = $reg[4][$i];}foo($d[0], $d[1]);$a = eval("return {$d[0][0]} {$f[0][0]} {$d[1][0]};");$y = gcd($a, $d[0][1]);echo $a/$y . '/'. $d[0][1]/$y;/** 通分 **/function foo(&$a, &$b) { $f = $a[1] * $b[1]; $a = array($a[0] * $f/$a[1], $f); $b = array($b[0] * $f/$b[1], $f);}/**辗转相除求最大公约数**/function gcd($a, $b) { if($a % $b) return gcd($b, $a % $b); else return $b;} 怎么修改缩进 大家都检测submit吗? 有多少人和我一样?对技术的执着... Fatal error: Function name must be a string in 请问怎么解决???急求解决的方法!!!! 数据库对象问题! 简单的PHP程序问题2 怎样用p3p实现跨域设置/读取cookies? 新手问题:什么是session MYSQL数据库进程的问题 ~兄弟姐妹么!谁有公司后台管理的源代码,请赐教!!~ 大负数转换,singed -> unsigned 多按钮输出变量,控制一个URL地址。
{
return $n*100.'%';
}
--------------------------------------------------------如果有小说位数有要求
可以用 sprintf("%01.2f", $n*100).'%'; --------------------------------------------------------楼上的sprintf很不错。 --------------------------------------------------------乘以100加上%就可以了 --------------------------------------------------------sprintf --------------------------------------------------------先 四舍五入,后转换
$str=round(5.055, 2); // 5.06 $str1=$str."%"; //5.06% --------------------------------------------------------sprintf("%01.2f", $n*100).'%'; --------------------------------------------------------sprintf("%01.2f", $n*100).'%'
$s = '1/4+1/5';preg_match_all("#((\d+)/(\d+))([-+/*]*)#", $s, $reg);for($i=0; $i<count($reg[1]); $i++) {
$d[] = array($reg[2][$i], $reg[3][$i]);
$f[] = $reg[4][$i];
}foo($d[0], $d[1]);$a = eval("return {$d[0][0]} {$f[0][0]} {$d[1][0]};");
$y = gcd($a, $d[0][1]);echo $a/$y . '/'. $d[0][1]/$y;/** 通分 **/
function foo(&$a, &$b) {
$f = $a[1] * $b[1];
$a = array($a[0] * $f/$a[1], $f);
$b = array($b[0] * $f/$b[1], $f);
}/**
辗转相除求最大公约数
**/
function gcd($a, $b) {
if($a % $b)
return gcd($b, $a % $b);
else
return $b;
}