摘要:有的时候,你可能有这种需求,需要将一个数字分为等份,多余的自动分配给其中一个数字。
有的时候,你可能有这种需求,需要将一个数字分为N等份,多余的自动分配给其中一个数字。
实现方法有如下两种,当然还有其他的,比如截取substr等,有兴趣的可以自己尝试:
第一种方法,采用bc函数,即PHP的数学扩展库bcmath,具体可以点击如下链接查看更多了解
BC数学函数 http://php.net/manual/zh/ref....
不多说了,直接上代码:
* 一个数字平分为N等份 * @param int $number 待平分的数字 * @param int $taotl 平分总个数 * @param int $index 保留小数位 */ function getDivideNumber($number, $total, $index = 2) { // 除法取平均数 $divide_number = bcdiv($number, $total, $index); // 减法获取最后一个数 $last_number = bcsub($number, $divide_number*($total-1), $index); // 拼装平分后的数据返回 $number_str = str_repeat($divide_number."+", $total-1).$last_number; return explode(",", $number_str); }
第二种方法,是我自定义的一种方法,大概思路是将待平分的数字乘以10的N次方,然后平分floor舍去取整,再除以10的N次方得到平分数,再用减法获取最后一个数,并格式化小数位,具体实现方法如下:
/** * 一个数字平分为N等份 * @param int $number 待平分的数字 * @param int $taotl 平分总个数 * @param int $index 保留小数位 */ function getDivideNumber($number, $total, $index = 2) { // 取平均数 $divide_number = floor($number / $total * pow(10, $index)) / pow(10, $index); $divide_number = number_format($divide_number, $index, ".", ""); // 获取最后一个数字 $last_number = $number - $divide_number * ($total - 1); $last_number = number_format_plus($last_number, $index, ".", ""); // 拼装平分后的数据返回 $number_str = str_repeat($divide_number . ",", $total - 1) . $last_number; return explode(",", $number_str); }
有说的不对的地方,请大家理解,欢迎留言,相互交流。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/28848.html
摘要:如果下标为的位置上已经有数字了,则说明该数字重复了。二维数组中的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 找出数组中重复的数字 n个数字,且数字都在0到n-1范围内思路:从头到尾扫描数组每个数字,当扫描到下标为i的数字m时,首先比较m是不是等于i,如果是,继...
摘要:三子棋三子棋游戏介绍规则游戏设计思路代码分析文件代码分析。玩家下棋实现。三子棋是一种民间传统游戏,又叫九宫棋圈圈叉叉一条龙井字棋等。落子后打印棋盘以显示。假设平局时判定输赢的函数返回后面代码实现时详细讲。 ...
摘要:回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。 回归算法 回归算法线性回归和非线性回归: 线性回...
阅读 1758·2023-04-25 22:42
阅读 2204·2021-09-22 15:16
阅读 3487·2021-08-30 09:44
阅读 488·2019-08-29 16:44
阅读 3307·2019-08-29 16:20
阅读 2514·2019-08-29 16:12
阅读 3389·2019-08-29 16:07
阅读 668·2019-08-29 15:08