亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PHP 浮點(diǎn)型與整型比較的小坑

付永剛 / 938人閱讀

摘要:今天我們來看一個(gè)在中比較有意思的事浮點(diǎn)數(shù)你認(rèn)為上面的代碼會出現(xiàn)什么結(jié)果呢這種比較視情況而定其實(shí)很簡單,因?yàn)樵谶@里,我們使用了來做比較,所以這個(gè)結(jié)果很清晰的就是,因?yàn)槲覀冏筮吺且粋€(gè)類似的數(shù),右邊是一個(gè)類型的數(shù)。如果你這樣想的話,那你就錯(cuò)了。

今天我們來看一個(gè)在 PHP 中比較有意思的事:浮點(diǎn)數(shù)(floats)


你認(rèn)為上面的代碼會出現(xiàn)什么結(jié)果呢?1. true 2. false 3. 這種比較視情況而定

其實(shí)很簡單,因?yàn)樵谶@里,我們使用了 === 來做比較,所以這個(gè)結(jié)果很清晰的就是 false,
因?yàn)槲覀冏筮吺且粋€(gè) floats 類似的數(shù),右邊是一個(gè) int 類型的數(shù)。
這是沒什么可以特別討論的。

那如果是這樣呢?


就是我們使用 == 來比較的時(shí)候呢?

你可能會這樣想:左邊 120085,右邊 120085,所以結(jié)果是 true。

如果你這樣想的話,那你就錯(cuò)了。其實(shí)你運(yùn)行上面的代碼,結(jié)果回是 false。

然而,我是說然而!你再嘗試修改一下數(shù)字,在運(yùn)行一次代碼,比如這樣:


你會發(fā)現(xiàn)結(jié)果非常神奇,這個(gè)時(shí)候結(jié)果是 true,所以說,這種比較其實(shí)還真是視情況而定。

那么問題出現(xiàn)在哪里呢?我們試著運(yùn)行下面的代碼:


結(jié)果會類似這樣:

float(120085) int(120085)

好像沒看出什么核心區(qū)別,我們這樣再試試:

die(var_dump(120085 - 1200.85 * 100));

這個(gè)時(shí)候的結(jié)果應(yīng)該是這樣:

float(1.4551915228367E-11)

這就說明問題了,其實(shí)這個(gè)結(jié)果并不是 0 ,而是一個(gè)很小的 floats 類似的數(shù)。
如果你看 PHP 文檔的時(shí)候:http://php.net/manual/zh/lang...
有注意那個(gè)很大的 Warning 的話,你應(yīng)該就會明白:這里的核心問題其實(shí)就是浮點(diǎn)數(shù)的精度!

那這樣的話,我們?nèi)绾伪容^才是我們期望的值呢?

答案就是使用 round() 函數(shù),像是這樣:

die(var_dump(round(1200.85 * 100) == 120085));

所以吧,在使用 PHP 做這些精度計(jì)算比較的時(shí)候,一定要實(shí)測它的比較結(jié)果,或者是使用一些保險(xiǎn)的手段進(jìn)行比較,不然就會吃大虧!
關(guān)注公眾號 codecasts ,每天更新 PHP Laravel 技能

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26114.html

相關(guān)文章

  • C語言:深度刨析數(shù)據(jù)在內(nèi)存中存儲——浮點(diǎn)型數(shù)據(jù)

    摘要:一浮點(diǎn)型數(shù)據(jù)及其取值范圍二浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存儲一小數(shù)的二進(jìn)制十進(jìn)制轉(zhuǎn)二進(jìn)制整數(shù)部分與整數(shù)原理相同,按照整數(shù)二進(jìn)制轉(zhuǎn)換的規(guī)則,寫成對應(yīng)的二進(jìn)制數(shù)。全為表示浮點(diǎn)數(shù)的最大值或者最小值。 ...

    YanceyOfficial 評論0 收藏0
  • python數(shù)據(jù)類型——數(shù)字

    摘要:例如返回的結(jié)果并不是,而是冪指數(shù)取余賦值給變量使用函數(shù)來查看變量類型整型數(shù)字的最大最小值在位系統(tǒng)中,一個(gè)整型個(gè)字節(jié),最小值,最大值。事實(shí)上,中儲存的值為,因?yàn)檫@是最接近的浮點(diǎn)數(shù)。 整型 Integers 整型運(yùn)算,加減乘: 2 + 2 4 3 - 4 -1 4 * 5 20 在Python 2.7中,整型的運(yùn)算結(jié)果只能返回整型,除法的結(jié)果也不例外。 例如12 / ...

    Jingbin_ 評論0 收藏0
  • 【數(shù)據(jù)類型存儲原理】數(shù)據(jù)存儲 - 深度剖析數(shù)據(jù)在內(nèi)存中存儲

    摘要:數(shù)據(jù)的存儲前言數(shù)據(jù)類型匯總整型家族浮點(diǎn)型家族自定義類型指針類型。整型家族注在之后的標(biāo)準(zhǔn)規(guī)定,將類型數(shù)據(jù)劃分為整型家族,因?yàn)樽址趦?nèi)存中會將其轉(zhuǎn)化為碼值進(jìn)行存儲。 ...

    yuanzhanghu 評論0 收藏0
  • 淺析二進(jìn)制與int范圍/IP計(jì)算及PHP應(yīng)用

    摘要:前言對于程序員的世界,一切東西皆二進(jìn)制。地址的計(jì)算根據(jù)常識,的每一位的區(qū)域只有在區(qū)間。根據(jù)它的二進(jìn)制就明了。查詢的話,數(shù)字效率是高于字符串的。 前言 ??對于程序員的世界,一切東西皆二進(jìn)制。 PHP整型長度與二進(jìn)制原理 ??我們一直說的整型有32位,很多人都說整型數(shù)最大值有2^32 -1,其實(shí)這個(gè)相對于無符號整型數(shù),那么這里來談?wù)撓掠蟹栒蛿?shù)。一個(gè)整型占四個(gè)字節(jié),每個(gè)字節(jié)有8bit,...

    宋華 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<