[請益] mod % 餘數最大位只能到9位數
最近寫了一個進制轉換函數
10進位轉X進位大致架構上是這樣的
1.算出要轉的進制最高次方
2.開始迴圈除進制次方
如果>0 暫存字串加入除後的整數
並將此數與進制次方進行取得餘數
否則 暫存字串加入一個"0"
3.回傳最後結果
程式的部份:
*******************************************
function dtb_conv($x,$y)
{
$i=0;$tn=-1;
while($tn<0)
{
if(pow($y,$i)>$x)$tn=$i-1;
$i+=1;
}
for($i=$tn;$i>=0;$i--)
{
if($x/pow($y,$i)>0)
{
$stmp=(int)($x/pow($y,$i));
if($stmp>9)$stmp=chr($stmp+55);
$trn.=$stmp;
$x=$x % pow($y,$i);
}
else $trn.="0";
}
return $trn;
}
******************************************
問題就出在 $x=$x % pow($y,$i); 這裡
如果要轉的數大於10位~就會有些數字不正確
並出現
Warning: Division by zero in XXX
想知道是不是PHP 內建mod有限制位數?
還是要修改什麼!?
或者自己寫個另外的mod函數!?
--
A:你的日曆怎麼都沒撕啊?
B:這樣才會每天過年啊!!
有這種道理嗎?????
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.118.111.28
→
06/09 15:21, , 1F
06/09 15:21, 1F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章