摘要:今天我們來看一個在中比較有意思的事浮點數(shù)你認為上面的代碼會出現(xiàn)什么結(jié)果呢這種比較視情況而定其實很簡單,因為在這里,我們使用了來做比較,所以這個結(jié)果很清晰的就是,因為我們左邊是一個類似的數(shù),右邊是一個類型的數(shù)。如果你這樣想的話,那你就錯了。
今天我們來看一個在 PHP 中比較有意思的事:浮點數(shù)(floats)
你認為上面的代碼會出現(xiàn)什么結(jié)果呢?1. true 2. false 3. 這種比較視情況而定
其實很簡單,因為在這里,我們使用了 === 來做比較,所以這個結(jié)果很清晰的就是 false,
因為我們左邊是一個 floats 類似的數(shù),右邊是一個 int 類型的數(shù)。
這是沒什么可以特別討論的。那如果是這樣呢?
就是我們使用 == 來比較的時候呢?
你可能會這樣想:左邊 120085,右邊 120085,所以結(jié)果是 true。
如果你這樣想的話,那你就錯了。其實你運行上面的代碼,結(jié)果回是 false。
然而,我是說然而!你再嘗試修改一下數(shù)字,在運行一次代碼,比如這樣:
你會發(fā)現(xiàn)結(jié)果非常神奇,這個時候結(jié)果是 true,所以說,這種比較其實還真是視情況而定。
那么問題出現(xiàn)在哪里呢?我們試著運行下面的代碼:
結(jié)果會類似這樣:
float(120085) int(120085)
好像沒看出什么核心區(qū)別,我們這樣再試試:
die(var_dump(120085 - 1200.85 * 100));這個時候的結(jié)果應該是這樣:
float(1.4551915228367E-11)
這就說明問題了,其實這個結(jié)果并不是 0 ,而是一個很小的 floats 類似的數(shù)。
如果你看 PHP 文檔的時候:http://php.net/manual/zh/lang...
有注意那個很大的 Warning 的話,你應該就會明白:這里的核心問題其實就是浮點數(shù)的精度!那這樣的話,我們?nèi)绾伪容^才是我們期望的值呢?
答案就是使用 round() 函數(shù),像是這樣:
die(var_dump(round(1200.85 * 100) == 120085));所以吧,在使用 PHP 做這些精度計算比較的時候,一定要實測它的比較結(jié)果,或者是使用一些保險的手段進行比較,不然就會吃大虧!
關(guān)注公眾號 codecasts ,每天更新 PHP Laravel 技能
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26114.html
摘要:一浮點型數(shù)據(jù)及其取值范圍二浮點型數(shù)據(jù)在內(nèi)存中的存儲一小數(shù)的二進制十進制轉(zhuǎn)二進制整數(shù)部分與整數(shù)原理相同,按照整數(shù)二進制轉(zhuǎn)換的規(guī)則,寫成對應的二進制數(shù)。全為表示浮點數(shù)的最大值或者最小值。 ...
摘要:例如返回的結(jié)果并不是,而是冪指數(shù)取余賦值給變量使用函數(shù)來查看變量類型整型數(shù)字的最大最小值在位系統(tǒng)中,一個整型個字節(jié),最小值,最大值。事實上,中儲存的值為,因為這是最接近的浮點數(shù)。 整型 Integers 整型運算,加減乘: 2 + 2 4 3 - 4 -1 4 * 5 20 在Python 2.7中,整型的運算結(jié)果只能返回整型,除法的結(jié)果也不例外。 例如12 / ...
摘要:數(shù)據(jù)的存儲前言數(shù)據(jù)類型匯總整型家族浮點型家族自定義類型指針類型。整型家族注在之后的標準規(guī)定,將類型數(shù)據(jù)劃分為整型家族,因為字符在內(nèi)存中會將其轉(zhuǎn)化為碼值進行存儲。 ...
摘要:前言對于程序員的世界,一切東西皆二進制。地址的計算根據(jù)常識,的每一位的區(qū)域只有在區(qū)間。根據(jù)它的二進制就明了。查詢的話,數(shù)字效率是高于字符串的。 前言 ??對于程序員的世界,一切東西皆二進制。 PHP整型長度與二進制原理 ??我們一直說的整型有32位,很多人都說整型數(shù)最大值有2^32 -1,其實這個相對于無符號整型數(shù),那么這里來談論下有符號整型數(shù)。一個整型占四個字節(jié),每個字節(jié)有8bit,...
閱讀 1565·2021-11-02 14:42
閱讀 2308·2021-10-11 10:58
閱讀 656·2021-09-26 09:46
閱讀 2908·2021-09-08 09:35
閱讀 1403·2021-08-24 10:01
閱讀 1228·2019-08-30 15:54
閱讀 3597·2019-08-30 15:44
閱讀 1792·2019-08-30 10:49