第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php float 轉(zhuǎn) int 的問題

php float 轉(zhuǎn) int 的問題

PHP
暮色呼如 2019-03-18 16:56:06
這樣一段代碼: $red_money = 143.66; $receive_money = 14.55; $residue_money = $red_money > $receive_money ? $red_money - $receive_money : 0; $receive_money = $residue_money * 100; var_dump($receive_money); var_dump((int)$receive_money); 打印出來是這樣的,怎么解釋這個問題
查看完整描述

3 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個贊

原因:浮點(diǎn)數(shù)的精度問題。

轉(zhuǎn)為整型

https://img1.sycdn.imooc.com//5c8f5d1e0001737408000385.jpg

注意:

  1. 向下取整,即:12910.9 會被轉(zhuǎn)換為 12910

    <?php
    var_dump(intval(12910.9));
    
    // 輸出
    // int(12910)
  2. 浮點(diǎn)數(shù)精度
    https://img1.sycdn.imooc.com//5c8f5d1f0001fc0c08000313.jpg

    看如下執(zhí)行結(jié)果:
    https://img1.sycdn.imooc.com//5c8f5d2100017e4f07210232.jpg
    我們知道:$receive_money 值小于 12911

總結(jié):所以,最后 $receive_money 轉(zhuǎn)換為整型時,向下取整,結(jié)果為:12910

參考:


問題補(bǔ)充:

為什么 float(12911) 沒有顯示成 12910.9999... 呢?

這是由于浮點(diǎn)數(shù)的二進(jìn)制表示形式?jīng)Q定的。
看如下示例:

https://img1.sycdn.imooc.com//5c8f5d23000141f008000445.jpg

我們看到第 9 行代碼 float(12911) 擴(kuò)展整數(shù)位之后,轉(zhuǎn)換成整型表示:int(129109999)
然后,我們對比了 float(12911)int(12911) 在二進(jìn)制上的差別。
是不是發(fā)現(xiàn)了什么?(二進(jìn)制的最后一位)這是 PHP-bug 么?當(dāng)然不是。
而且我們同樣也注意到了第 8 行代碼輸出結(jié)果為:float(129110000),這又是為什么呢?
為什么不是 float(129109999)呢?

我們看一下 PHP 源碼中浮點(diǎn)數(shù)是什么:
https://img1.sycdn.imooc.com//5c8f5d250001837708000369.jpg
如圖:php-float 等于 c-double
我想如下幾個問題可以解決上述的疑問:
雙精度浮點(diǎn)數(shù) 的二進(jìn)制形式是如何表示的呢? 請參考:wikipedia-雙精度浮點(diǎn)數(shù)
浮點(diǎn)數(shù)是如何處理乘法運(yùn)算的呢? 請參考:wikipedia-浮點(diǎn)數(shù)的乘法和除法

如果上邊兩個問題不愿深究,可以直接參考鳥哥的一篇博客:PHP浮點(diǎn)數(shù)的一個常見問題的解答

以上為個人理解,如果錯誤之處,請指出。

查看完整回答
反對 回復(fù) 2019-03-18
?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個贊

(143.66 - 14.55) * 100 = 12910.999999999998
浮點(diǎn)數(shù)接近12911
12910.999999999998
這個數(shù)的整形不就是 12910么..

查看完整回答
反對 回復(fù) 2019-03-18
?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個贊

四舍五入取證 round(param)
向上取整 ceil(param)
向下取整 floor(param)

查看完整回答
反對 回復(fù) 2019-03-18
  • 3 回答
  • 0 關(guān)注
  • 1190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號