ip 转int int 与float

$ipArr    = explode('.','139.86.23.139');
print_r($ipArr);
$ip = $ipArr[0] * 0x1000000
+ $ipArr[1] * 0x10000
+ $ipArr[2] * 0x100
+ $ipArr[3];
echo $ip.'<br>';

$ipVal =$ip;
$ipArr = array(0 =>
floor( $ipVal / 0x1000000) );
$ipVint = $ipVal-($ipArr[0]*0x1000000); // for clarity
$ipArr[1] = ($ipVint & 0xFF0000) >> 16;
$ipArr[2] = ($ipVint & 0xFF00 ) >> 8;
$ipArr[3] = $ipVint & 0xFF;
$ipDotted = implode('.', $ipArr);
echo $ipDotted;


---------------------------------------------------
int() 精度丢失

$a = (0.1 + 0.7) *10;
echo  (int) $a; // 7  int
echo var_dump($a) //8 float

echo (int)(19.31 * 100);  //1930

$x = 8 - 6.4; 
$y = 1.6;
var_dump($x == $y); // false

//PHP认为1.6(来自差异)不等于1.6。要使它工作,使用round()
var_dump(round($x, 2) == round($y, 2));  //  true




posted on 2018-11-17 17:07  ph||py  阅读(304)  评论(0)    收藏  举报