php bcdiv和bcmul 函数的怪异现象

一、简介

我要实现这样一个表达式
z=总奖金
n=总名数
i=自己的排民
((n-i+1)/(1+2+3+…n))*z
这是一个分配奖金的式子。我试着用php的bc函数进行操作发现以下两种写法得出不一样的结果
表达式1: a r r [ arr[ arr[i]=bcmul(bcdiv((51- i ) , i), i),num,2), r e w a r d [ ′ L e a d e r b o a r d ′ ] , 0 ) ; 表 达 式 2 : reward['Leaderboard'],0); 表达式2: reward[′Leaderboard′],0);表达式2:arr[ i ] = b c m u l ( b c d i v ( i]=bcmul(bcdiv( i]=bcmul(bcdiv(reward[‘Leaderboard'], n u m , 2 ) , ( 51 − num,2),(51- num,2),(51−i),0);

二、现象

1.我代码

//根据时间计算排名奖励
    public function calculateTheReward($dateStr="2021-04-12 00:00:00"){
        $reward=Login::table('dailyReward')->where(['dateStr'=>$dateStr])->find()->toArray();
        $arr=[];
        $num=1275;
        for ($i=1;$i<=50;$i++){
            $arr[$i]=bcmul(bcdiv($reward['Leaderboard'],$num,2),(51-$i),0);//bcmul(bcdiv((51-$i),$num,2),$reward['Leaderboard'],0);
        }
        print_r($arr);die;
    }

用表达式1得出结果:

用表达式2得出以下结果:

到此这篇关于php bcdiv和bcmul 函数的怪异现象的文章就介绍到这了,更多相关php bcdiv和bcmul 函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PHP危险函数禁用深入详解

    error_log() 功能描述:将错误信息发送到指定位置(文件).  安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode, 执行任意命令.  危险等级:低 phpinfo() 功能描述:输出 PHP 环境信息以及相关的模块.WEB 环境等信息.  危险等级:中 scandir()  功能描述:列出指定路径中的文件和目录.  禁用建议:不建议禁用,因为thinkphp框架需要调用. 危险等级:中 syslog()  功能描述:可调用 UNIX 系

  • python如何调用php文件中的函数详解

    前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1.操作系统:macos10.13.2 2.php版本:PHP 7.1.7(mac自带) 3.python版本:python3.6.0 4.python库:subprocess 调用php函数 php命令行调用php文件中的函数 php文件:test_hello.php <?php function h

  • php array_map()函数实例用法

    有时候我们想要对数组里的元素进行改变,不过在函数的选择上犯了难题.本篇带来的是array_map函数,对于数组中元素的值进行调整,然后再返回新的数组,处理数组的数量上也不止一个.下面我们就array_map()函数的说明.语法.参数.返回值.实例带来详解. 1.说明 array_map用回调函数处理数组中的各个元素. 在函数中你可以改变各个元素的值,重点在你需要什么样的值就返回什么样的值,保持索引. 可以一次性处理多个数组.但是数组的数量应该与回调函数的参数保持一致 2.语法 array_map

  • PHP中断言函数的使用详解

    原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数.也就是说,我们在代码中进行简单的测试的时候是不需要完全引入整个单元测试组件的. assert() 断言函数 assert(1==1); assert(1==2); // assert.exception = 0 时,Warning: assert(): assert(1 == 2) // assert.exception = 1 时,Fata

  • PHP执行系统命令函数实例讲解

    命令注入 命令注入(Command Injection),对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者 bash 命令)的一种注入攻击手段. 常见的执行系统命令的函数有 system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec() system()函数 string system ( string $command [, int &$return_var ] ) $comm

  • 详解各种PHP函数漏洞

    1.MD5 compare漏洞 PHP在处理哈希字符串时,会利用"!="或"=="来对哈希值进行比较,它把每一个以"0E"开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以"0E"开头的,那么PHP将会认为他们相同,都是0. 常见的payload有 0x01 md5(str) QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387

  • PHP超级全局变量、魔术变量和魔术函数汇总整理

    PHP在设计的时候已经预定义了9个超级全局变量.8个魔术变量和13魔术函数,这些变量和函数可以在脚本的任何地方不用声明就可以使用. 在PHP开发会频繁的使用这些变量和函数,这些变量和函数可以方便的帮我们解决很多问题.下面详细的讲解下PHP中的超级全局变量.魔术变量和魔术函数. PHP超级全局变量(9个) $GLOBALS:储存全局作用域中的变量 $_SERVER:获取服务器相关信息 $_REQUEST:获取POST和GET请求的参数 $_POST:获取表单的POST请求参数 $_GET:获取表单

  • php中使用array_filter()函数过滤数组实例讲解

    在数组中元素的过滤上,有一种方法比较特殊,结合了回调函数的使用,通过键值来与函数进行对应.相信说到这里很多人对于这种函数方法已经很好奇了,它就是array_filter() 函数的使用.接下来我们对该函数的定义.语法.参数.返回值.实例进行全面的介绍,具体过滤方法展现如下. 1.定义 array_filter用回调函数处理数组中的各个元素. 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,如果返回了false,那么这个元素将会被过滤掉.PS:保持了原来的索引. 2.语法 array a

  • 正则表达式之零宽断言实例详解【基于PHP】

    本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 之前我曾写了一篇关于正则表达式的文章(http://www.jb51.net/article/111359.htm) 在该文章中详细介绍了正则,但是关于零宽断言介绍却是很少提及到.现在将该内容补充一下.在本文中,主要解决如下问题: ① 什么是零宽断言,为什么要使用零宽断言 ② 怎样使用零宽断言 概念 零宽断言,大多地方这样定义它,用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \<

  • php bcdiv和bcmul 函数的怪异现象

    一.简介 我要实现这样一个表达式 z=总奖金 n=总名数 i=自己的排民 ((n-i+1)/(1+2+3+-n))*z 这是一个分配奖金的式子.我试着用php的bc函数进行操作发现以下两种写法得出不一样的结果 表达式1: a r r [ arr[ arr[i]=bcmul(bcdiv((51- i ) , i), i),num,2), r e w a r d [ ′ L e a d e r b o a r d ′ ] , 0 ) ; 表 达 式 2 : reward['Leaderboard']

  • PHP函数rtrim()使用中的怪异现象分析

    本文实例讲述了PHP函数rtrim()使用中的怪异现象.分享给大家供大家参考,具体如下: 今天用rtrim()函数时遇到了一个奇怪的问题: echo rtrim('<p></div>', '</div>'); // 输出为 <p echo ltrim('www.jb51.net','www.'); // 输出为 jb51.net 以上的输出结果有点出人意料,本来我想第一行应该输出<p>,第二行会输出jb51.net. 这个问题纠结了我好久,一直没有找到

  • delphi 字符串处理中的怪异现象与处理方式

    1, 怪异现象:字符串相加操作不正常! 以上代码,明显输出字符串应含有后缀".jpg",但实际输出却不含后缀(如下),字符串加法操作似乎不起作用了! 采用showMessage进行输出,看看结果如何? 结果仍是不显示字符串后缀,但可以看到字符串偏左显示,似乎后面还有很多不可见字符. 2,怪异原因:字符串中含有\0,即字符串终止符 以上现象已经看出,字符串加法失效的原因可能是含有某些不可见字符,那到底是什么字符呢? 回到这些字符串产生的源头,即下面由字节数组转换成字符串函数: 显然,此函

  • MySQL中sleep函数的特殊现象示例详解

    前言 MySQL中的系统函数sleep,实际应用的场景不多,一般用来做实验测试,昨天在测试的时候,意外发现sleep函数的一个特殊现象.如果在查询语句中使用sleep函数,那么休眠的时间跟返回的记录有关. 如下测试所示: mysql> create table test(id int); Query OK, 0 rows affected (0.03 sec) mysql> select *, sleep(6) from test; Empty set (0.00 sec) mysql>

  • JavaScript基础篇(6)之函数表达式闭包

    其实js支持函数闭包的主要原因是因为js需要函数能够保存数据.这里的保存数据是只函数在运行结束以后函数内变量的值也会进行保存.至于为什么js需要在函数内可以保存数据,那就是js是一种函数式语言.在函数内保存数据是函数式语言的一大特征. 回顾前面介绍过的三种定义函数方式 functiosu(numnumreturnunum//函数声明语法定义 vasufunction(numnum)returnunum}//函数表达式定义 vasuneFunction("num""num&qu

  • php中替换字符串函数strtr()和str_repalce()的用法与区别

    首先来看看这个php字符串替换函数 strtr()的两种用法: strtr(string,from,to) 或者strtr(string,array) 首先针对strtr函数第一种方式: 我们看看下面的举例: <?php echo strtr("I Love you","Lo","lO"); ?> 得到的结果是: I lOve yOu 这个结果提醒我们: 1.strtr它是区分大小写的 2.strtr的替换是很特殊的,你注意看后面那个

  • C语言中的函数指针基础学习教程

    顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * p2); 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2是参数,其类型为char *型,函数的返回值为char *类型. B) 也很简单,与C)表达式相比,唯一不同的就是函数的

  • MooTools 1.2中的Drag.Move来实现拖放

    它的使用和我们见过的其他的插件类似:首先你使用"new"关键字来创建一个Drag.Move对象并赋值给一个变量,然后你再定义你的选项和事件.这就是全部要做的事情,不过你一定要注意一下下面的例子中描述的IE的CSS怪异现象. 基本用法 Drag.Move 创建你自己的拖动对象非常的容易.稍微看一下下面的例子就行了.注意一下我们是怎么把我们的Drag.Move对象的选项和事件从我们的Drag选项和事件中分离出来的.Drag.Move类扩展了Drag类,因此它可以接受Drag类的选项和事件.

  • JavaScript稀疏数组与孔hole示例详解

    目录 稀疏数组是什么 JavaScript数组天生就是稀疏数组 JavaScript数组稀疏特性带来的“怪异现象” slice会复制孔 forEach.every会跳过孔(不对孔调用回调函数) map不对孔调用回调函数,但是孔会保留 filter不对孔调用回调函数,但是孔会被过滤掉 join会将孔转化为一个空字符串进行拼接,与undefined一样 初始化无孔数组的方法 Array.apply(null, Array(n))的原理 稀疏数组是什么 在绝大多数JavaScript的实现中,数组是稀

  • Dom-api MutationObserver使用方法详解

    目录 1. 概述 2. 基本使用 2.1 observer 方法 2.2 MutationObserverInit 对象 2.3 disconnect()方法 2.4 takeRecords 3. MutationRecord 3.1 MutationRecord 实例 4. MutationObserver 实战 总结 1. 概述 MutationObserver 接口提供了监视对 DOM 树所做更改的能力.它被设计为旧的 Mutation Events 功能的替代品,该功能是 DOM3 Ev

随机推荐