当前位置: 首页 > 后端技术 > PHP

PHP算法:将一个数均分N份,总值相等

时间:2023-03-30 02:06:19 PHP

有时候,你可能会有这种需求,需要将一个数均分N份,多出的部分自动分配给一个的数字。实现方法有如下两种,当然还有其他的,比如拦截substr等,有兴趣的可以自己试试:第一种方法使用bc函数,它是PHP的数学扩展库bcmath。详情可以点击下方链接查看更多了解BC数学函数http://php.net/manual/zh/ref...话不多说,直接上传代码:*A数分成Nequalparts*@paramint$number要划分的个数*@paramint$taotl等于总数*@paramint$index保留小数位*/functiongetDivideNumber($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;returnexplode(',',$number_str);}第二个方法是我自定义的方法。大体思路是将要除的数乘以10然后把floor的N次方均分,除以10的N次方得到相等的分,然后用减法得到最后一个数,格式化小数位.具体实现方法如下:/***一个数分成N等份*@paramint$number要分割的个数*@paramint$taotl等份总数*@paramint$index保留小数位*/functiongetDivideNumber($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;returnexplode(',',$number_str);}有不妥之处,敬请谅解,欢迎留言交流