摘要:有的時候,你可能有這種需求,需要將一個數字分為等份,多余的自動分配給其中一個數字。
有的時候,你可能有這種需求,需要將一個數字分為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); }
有說的不對的地方,請大家理解,歡迎留言,相互交流。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28848.html
摘要:如果下標為的位置上已經有數字了,則說明該數字重復了。二維數組中的查找在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 找出數組中重復的數字 n個數字,且數字都在0到n-1范圍內思路:從頭到尾掃描數組每個數字,當掃描到下標為i的數字m時,首先比較m是不是等于i,如果是,繼...
摘要:三子棋三子棋游戲介紹規則游戲設計思路代碼分析文件代碼分析。玩家下棋實現。三子棋是一種民間傳統游戲,又叫九宮棋圈圈叉叉一條龍井字棋等。落子后打印棋盤以顯示。假設平局時判定輸贏的函數返回后面代碼實現時詳細講。 ...
摘要:回歸分析中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。 回歸算法 回歸算法線性回歸和非線性回歸: 線性回...
閱讀 1751·2023-04-25 22:42
閱讀 2202·2021-09-22 15:16
閱讀 3486·2021-08-30 09:44
閱讀 485·2019-08-29 16:44
閱讀 3304·2019-08-29 16:20
閱讀 2512·2019-08-29 16:12
閱讀 3387·2019-08-29 16:07
閱讀 667·2019-08-29 15:08