摘要:有的時(shí)候,你可能有這種需求,需要將一個(gè)數(shù)字分為等份,多余的自動(dòng)分配給其中一個(gè)數(shù)字。
有的時(shí)候,你可能有這種需求,需要將一個(gè)數(shù)字分為N等份,多余的自動(dòng)分配給其中一個(gè)數(shù)字。
實(shí)現(xiàn)方法有如下兩種,當(dāng)然還有其他的,比如截取substr等,有興趣的可以自己嘗試:
第一種方法,采用bc函數(shù),即PHP的數(shù)學(xué)擴(kuò)展庫(kù)bcmath,具體可以點(diǎn)擊如下鏈接查看更多了解
BC數(shù)學(xué)函數(shù) http://php.net/manual/zh/ref....
不多說(shuō)了,直接上代碼:
* 一個(gè)數(shù)字平分為N等份 * @param int $number 待平分的數(shù)字 * @param int $taotl 平分總個(gè)數(shù) * @param int $index 保留小數(shù)位 */ function getDivideNumber($number, $total, $index = 2) { // 除法取平均數(shù) $divide_number = bcdiv($number, $total, $index); // 減法獲取最后一個(gè)數(shù) $last_number = bcsub($number, $divide_number*($total-1), $index); // 拼裝平分后的數(shù)據(jù)返回 $number_str = str_repeat($divide_number."+", $total-1).$last_number; return explode(",", $number_str); }
第二種方法,是我自定義的一種方法,大概思路是將待平分的數(shù)字乘以10的N次方,然后平分floor舍去取整,再除以10的N次方得到平分?jǐn)?shù),再用減法獲取最后一個(gè)數(shù),并格式化小數(shù)位,具體實(shí)現(xiàn)方法如下:
/** * 一個(gè)數(shù)字平分為N等份 * @param int $number 待平分的數(shù)字 * @param int $taotl 平分總個(gè)數(shù) * @param int $index 保留小數(shù)位 */ function getDivideNumber($number, $total, $index = 2) { // 取平均數(shù) $divide_number = floor($number / $total * pow(10, $index)) / pow(10, $index); $divide_number = number_format($divide_number, $index, ".", ""); // 獲取最后一個(gè)數(shù)字 $last_number = $number - $divide_number * ($total - 1); $last_number = number_format_plus($last_number, $index, ".", ""); // 拼裝平分后的數(shù)據(jù)返回 $number_str = str_repeat($divide_number . ",", $total - 1) . $last_number; return explode(",", $number_str); }
有說(shuō)的不對(duì)的地方,請(qǐng)大家理解,歡迎留言,相互交流。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28848.html
摘要:如果下標(biāo)為的位置上已經(jīng)有數(shù)字了,則說(shuō)明該數(shù)字重復(fù)了。二維數(shù)組中的查找在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。 找出數(shù)組中重復(fù)的數(shù)字 n個(gè)數(shù)字,且數(shù)字都在0到n-1范圍內(nèi)思路:從頭到尾掃描數(shù)組每個(gè)數(shù)字,當(dāng)掃描到下標(biāo)為i的數(shù)字m時(shí),首先比較m是不是等于i,如果是,繼...
摘要:三子棋三子棋游戲介紹規(guī)則游戲設(shè)計(jì)思路代碼分析文件代碼分析。玩家下棋實(shí)現(xiàn)。三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋圈圈叉叉一條龍井字棋等。落子后打印棋盤以顯示。假設(shè)平局時(shí)判定輸贏的函數(shù)返回后面代碼實(shí)現(xiàn)時(shí)詳細(xì)講。 ...
摘要:回歸分析中,只包括一個(gè)自變量和一個(gè)因變量,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。 回歸算法 回歸算法線性回歸和非線性回歸: 線性回...
摘要:編碼的前綴可以表示更大的區(qū)域,查找附近的,非常方便。百度拾取坐標(biāo)地址編碼精度為位時(shí),大概為附近千米。在經(jīng)度相等的情況下緯度每隔度,距離相差約米每隔度,距離相差約米每隔度,距離相差約米每隔度,距離相差約米每隔度,距離相差約米。 隨著移動(dòng)端的普及,很多 App應(yīng)用 都有 LBS 功能。 附近的銀行、 附近的飯店、 附近的超市、 附近的廁所、 ... 以上的需求很類似,實(shí)現(xiàn)的原理也大致相同。...
閱讀 2072·2023-04-25 22:42
閱讀 2280·2021-09-22 15:16
閱讀 3540·2021-08-30 09:44
閱讀 544·2019-08-29 16:44
閱讀 3368·2019-08-29 16:20
閱讀 2577·2019-08-29 16:12
閱讀 3447·2019-08-29 16:07
閱讀 721·2019-08-29 15:08