http://php.net/manual/zh/lang...
從浮點型轉(zhuǎn)換
當從浮點數(shù)轉(zhuǎn)換成整數(shù)時,將向下取整。
如果浮點數(shù)超出了整數(shù)范圍(32 位平臺下通常為 +/- 2.15e+9 = 2^31,64 位平臺下,除了 Windows,通常為 +/- 9.22e+18 = 2^63),則結果為未定義,因為沒有足夠的精度給出一個確切的整數(shù)結果。在此情況下沒有警告,甚至沒有任何通知!
Note:PHP 7.0.0 起,NaN 和 Infinity 在轉(zhuǎn)換成 integer 時,不再是 undefined 或者依賴于平臺,而是都會變成零。Warning絕不要將未知的分數(shù)強制轉(zhuǎn)換為 integer,這樣有時會導致不可預料的結果。<?phpecho (int) ( (0.1+0.7) * 10 ); // 顯示 7!?>
2 回答

慕少森
TA貢獻2019條經(jīng)驗 獲得超9個贊
PHP中float轉(zhuǎn)int是將小數(shù)位全部棄掉,(0.1+0.7)*10的結果內(nèi)部的表示其實是類似7.9999999999999991118…,于是強行轉(zhuǎn)換為int值時,結果為7。
如果實在要轉(zhuǎn),最好使用round,進行四舍五入避開浮點數(shù)精度的坑
echo (int)((0.7+0.1)*10); // 輸出7
echo round((0.7+0.1)*10); // 輸出8
注意:永遠不要相信浮點數(shù)結果精確到了最后一位,也永遠不要比較兩個浮點數(shù)是否相等。如果確實需要更高的精度,應該使用任意精度數(shù)學函數(shù)或者 gmp
函數(shù)。
- 2 回答
- 0 關注
- 532 瀏覽
添加回答
舉報
0/150
提交
取消