设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 2928|回复: 6

充100块钱手续费3% 实际应该付103,商家如何通过103元和手续费3%求出到帐金额和手续费

[复制链接]
 成长值: 54

签到天数: 4643 天

[LV.Master]伴坛终老

发表于 2015/7/26 02:43 | 显示全部楼层 |阅读模式 |Google Chrome 44.0.2403.107|Windows 8.1
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
注:手续费3%是可能会变动的,比如说4.37%,5%等不等,求公式
就是手续费不是从他冲的100里面扣
是需要额外付费来承担

也就是实际金额=100+(100*(3/100))
反过来怎么算

然而商家这边收到的是103元,和通知到了3%的手续费,并没有实际列出3元和100元,现在就是要算出来然后来列举存入数据库


答:
收到的钱/(100+汇率)*100 结果四舍五入
x+(x*(y/100))=收到的钱
就是解个 二元一次方程


$jine=round($jine/(100+plug_eva('spay','手续费'))*100);
QQ图片20150726024237.png


学霸群给出的答案,总感觉不对,因为手续费3%的汇率是不固定的。


另一个学霸群给出的答案
实际金额 ÷ (1 + 3%) = 原始金额

套进去公式我认为这个才是正确的。

[发帖际遇]: 一个袋子砸在了 小樱 头上,小樱 赚了 4 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

半醉半醒 该用户已被删除
发表于 2015/7/26 02:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 17 天

[LV.4]偶尔看看III

发表于 2015/7/26 21:54 | 显示全部楼层 |Google Chrome 42.0.2311.152|Windows 7
本帖最后由 w123rq 于 2015/7/26 22:02 编辑

是的,相当于解一个二元一次方程,但是二元一次方程必须要2个方程才能解出实数解集。
所以是算不出来的,会有N个解。
如果你的充值金额是整数,而且手续费最多是xx.xx%两位小数的话,可以用下面这段,但是还是可能会有多个结果:
  1. <?php
  2. function getlength($num) {
  3.         $count = 0;
  4.         $temp = explode ( '.', $num );
  5.         if (sizeof ( $temp ) > 1) {
  6.                 $decimal = end ( $temp );
  7.                 $count = strlen ( $decimal );
  8.                 }
  9.                 return $count;
  10.                 }
  11.         if($_GET['act']=="cacula"){
  12.                 $total=$_POST['total'];
  13.                 $total_int=intval($_POST['total']);
  14.                 $i=1;
  15.                 while($i<=$total){
  16.                         $result=($total/($total_int-$i))-1;
  17.                         if(getlength($result)==2){
  18.                                 $rc=$total_int-$i;
  19.                                 $rs=round($result*100,2);
  20.                                 if($rs<=10){//手续费一般不超过10%
  21.                                 ?>
  22.                                 Result: Recharge=<?=$rc?> & Tax=<?=$rs?>%<br/>
  23.                                 <?
  24.                                 }
  25.                         }
  26.                         $i++;
  27.                 }
  28.         }
  29. ?>
  30. <html>
  31. <body>
  32. <form method="POST" action="?act=cacula">
  33.         Recharge_points:<input type="text" name="total" /><br/>
  34.         <input type="submit" value="Submit"/>
  35. </form>
  36. </body>
  37. </html>
复制代码

QQ截图20150726215531.png 测试结果如上
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 30 天

[LV.5]常住居民I

发表于 2015/7/26 22:36 | 显示全部楼层 |Google Chrome 41.0.2272.118|Windows 8.1
w123rq 发表于 2015/7/26 21:54
是的,相当于解一个二元一次方程,但是二元一次方程必须要2个方程才能解出实数解集。
所以是算不出来的,会有 ...
  1. <?php
  2. header("Content-type:text/html;charset=utf-8");
  3. if($_GET['act']=="cacula"){
  4.                         $jk['方案1']=round($_POST['得到的钱']/(100+$_POST['手续费'])*100);
  5.                         $jk['方案2']=round($_POST['得到的钱']/(1+($_POST['手续费']/100)));
  6. }
  7. ?>
  8. <html>
  9. <body>
  10. 方案1:<?php echo $jk['方案1']; ?><br/>
  11. 方案2:<?php echo $jk['方案2']; ?><br/><br/>
  12. <form method="POST" action="?act=cacula">
  13.       
  14.         手续费:<input type="text" name="手续费" value="<?php echo $_POST['手续费']; ?>"/>%<br/>
  15.         收到的钱:<input type="text" name="得到的钱"  value="<?php echo $_POST['得到的钱']; ?>"/><br/>
  16.                    <input type="submit" value="Submit"/>
  17. </form>
  18. </body>
  19. </html>
复制代码


fa1.png fa2.png
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

 成长值: 54

签到天数: 4643 天

[LV.Master]伴坛终老

发表于 2015/7/26 22:37 | 显示全部楼层 |Google Chrome 44.0.2403.107|Windows 8.1
w123rq 发表于 2015/7/26 21:54
是的,相当于解一个二元一次方程,但是二元一次方程必须要2个方程才能解出实数解集。
所以是算不出来的,会有 ...


66666
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 30 天

[LV.5]常住居民I

发表于 2015/7/26 22:47 | 显示全部楼层 |Google Chrome 41.0.2272.118|Windows 8.1
本帖最后由 黑色小河 于 2015/7/26 22:49 编辑
w123rq 发表于 2015/7/26 21:54
是的,相当于解一个二元一次方程,但是二元一次方程必须要2个方程才能解出实数解集。
所以是算不出来的,会有 ...


然后 我研究了 很长时间方程 知道方案2 的来法
x是未知  y是汇率   z是收到的钱
汇率是管理设置好的  z是接口收到的钱
得出一开始的方程应该是这个样的x+x*y=z
解 设 y=3% z=103
所以 y=100 / 3
y=0.03
然后代入原方程
得 x+x*0.03=103
1x+0.03x=103
(1+0.03)x=103      
x=103/(1+0.03)【也就是 z/(1+y) 也就是 用户支付的钱/(1+汇率)=用户得到的钱】  
x=100  
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 30 天

[LV.5]常住居民I

发表于 2015/7/26 22:49 | 显示全部楼层 |Google Chrome 41.0.2272.118|Windows 8.1
本帖最后由 黑色小河 于 2015/7/26 22:51 编辑

但是方案2 始终想不出怎么得来的 但是方案 1和2 得出的结果始终一样
[发帖际遇]: 黑色小河 被钱袋砸中进医院,看病花了 2 樱币. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/9/20 00:18 , Processed in 0.178628 second(s), 28 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表