|  | 
 
 发表于 2015/7/26 21:54
|
显示全部楼层
|  Google Chrome 42.0.2311.152|  Windows 7 
| 本帖最后由 w123rq 于 2015/7/26 22:02 编辑 
 是的,相当于解一个二元一次方程,但是二元一次方程必须要2个方程才能解出实数解集。
 所以是算不出来的,会有N个解。
 如果你的充值金额是整数,而且手续费最多是xx.xx%两位小数的话,可以用下面这段,但是还是可能会有多个结果:
 
 复制代码<?php
function getlength($num) {
        $count = 0;
        $temp = explode ( '.', $num ); 
        if (sizeof ( $temp ) > 1) {
                $decimal = end ( $temp );
                $count = strlen ( $decimal );
                }
                return $count;
                }
        if($_GET['act']=="cacula"){
                $total=$_POST['total'];
                $total_int=intval($_POST['total']);
                $i=1;
                while($i<=$total){
                        $result=($total/($total_int-$i))-1;
                        if(getlength($result)==2){
                                $rc=$total_int-$i;
                                $rs=round($result*100,2);
                                if($rs<=10){//手续费一般不超过10%
                                ?>
                                Result: Recharge=<?=$rc?> & Tax=<?=$rs?>%<br/>
                                <?
                                }
                        }
                        $i++;
                }
        }
?>
<html>
<body>
<form method="POST" action="?act=cacula">
        Recharge_points:<input type="text" name="total" /><br/>
        <input type="submit" value="Submit"/>
</form>
</body>
</html>
  测试结果如上 
 | 
 |