|
发表于 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>
复制代码
测试结果如上
|
|