新聞中心
本教程操作環(huán)境:windows10系統(tǒng)、php7.1版、DELL G3電腦

為了區(qū)分 php中float和double的區(qū)別,我采用以下代碼分別輸出。
$vad = 1.1; print gettype($vad); var_dump($vad);
這將輸出:
double float(1.1)
看著其實(shí)不同,實(shí)際上在php中,沒(méi)有區(qū)別。 float,double或real是相同的數(shù)據(jù)類型。浮點(diǎn)型(也叫浮點(diǎn)數(shù) float,雙精度數(shù) double 或?qū)崝?shù) real. 在C級(jí),一切都存儲(chǔ)為雙。
實(shí)際大小仍然是平臺(tái)相關(guān)的。有關(guān)詳細(xì)信息,請(qǐng)參閱手冊(cè):
http://www.php.net/manual/en/language.types.float.php
浮點(diǎn)數(shù)的精度
浮點(diǎn)數(shù)的精度有限。盡管取決于系統(tǒng),PHP 通常使用 IEEE 754 雙精度格式,則由于取整而導(dǎo)致的最大相對(duì)誤差為 1.11e-16。非基本數(shù)學(xué)運(yùn)算可能會(huì)給出更大誤差,并且要考慮到進(jìn)行復(fù)合運(yùn)算時(shí)的誤差傳遞。
此外,以十進(jìn)制能夠精確表示的有理數(shù)如 0.1 或 0.7,無(wú)論有多少尾數(shù)都不能被內(nèi)部所使用的二進(jìn)制精確表示,因此不能在不丟失一點(diǎn)點(diǎn)精度的情況下轉(zhuǎn)換為二進(jìn)制的格式。這就會(huì)造成混亂的結(jié)果:例如,floor((0.1+0.7)*10) 通常會(huì)返回 7 而不是預(yù)期中的 8,因?yàn)樵摻Y(jié)果內(nèi)部的表示其實(shí)是類似 7.9999999999999991118…。
所以永遠(yuǎn)不要相信浮點(diǎn)數(shù)結(jié)果精確到了最后一位,也永遠(yuǎn)不要比較兩個(gè)浮點(diǎn)數(shù)是否相等。如果確實(shí)需要更高的精度,應(yīng)該使用任意精度數(shù)學(xué)函數(shù)或者 gmp 函數(shù)。
文章題目:php中float和double的區(qū)別是什么
路徑分享:http://m.fisionsoft.com.cn/article/dhhdjed.html


咨詢
建站咨詢
