日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > php 浮點(diǎn)數(shù)精度值實(shí)例程序詳解

php 浮點(diǎn)數(shù)精度值實(shí)例程序詳解

來源:程序員人生   發(fā)布時(shí)間:2014-05-03 15:08:27 閱讀次數(shù):3216次

php中浮點(diǎn)數(shù)的精度值是用來控制輸出該浮點(diǎn)數(shù)時(shí)使用的,可以理解為控制輸出的位數(shù),精度值不同,看到輸出結(jié)果也可能不一樣,注意:其內(nèi)部還是按照實(shí)際值存儲的,當(dāng)兩個(gè)浮點(diǎn)數(shù)進(jìn)行四則運(yùn)算時(shí),用的還是其本來的值。

php的配置文件中使用precision來設(shè)定全局指定浮點(diǎn)數(shù)的精度值,似乎每個(gè)發(fā)行版,它的默認(rèn)設(shè)置都不太一樣,我在window下看到是12,在linux下看到此值是14,當(dāng)然也可以通過程序中使用ini_set來改變?nèi)衷O(shè)置,例如:

ini_set("precision", "15");

對于精度我一直理解為小數(shù)點(diǎn)后保留多少,那么在php的浮點(diǎn)數(shù)中是這樣的么?答案是否定的。

浮點(diǎn)數(shù)其實(shí)是整數(shù)部分和小數(shù)部分組成,這里的精度是指整數(shù)部分的位數(shù)加小數(shù)部分的位數(shù)不能超過其精度最大值,如果超過,則按照四舍五入的方法截?cái)嗟阶畲蟮木戎怠U麛?shù)部分如果是0,則不計(jì)位數(shù),小數(shù)部分末尾0也不計(jì)入位數(shù)。另外對于同一個(gè)數(shù),precision的不同,可能顯示的出來表現(xiàn)形式也不一樣。下面通過例子的方式來說明。

整數(shù)部分為 0 情況,代碼如下:

  1. $num = 0.12345600000000000; 
  2.  //整數(shù)部分為0 ,位數(shù)為 0 ,小數(shù)部分末尾的 0 不計(jì)入位數(shù),所以總位數(shù)為 6 
  3.  ini_set("precision""12"); 
  4.  echo $num// 0.123456 
  5.  //未超過精度值,顯示的結(jié)果為 0.123456 
  6.  ini_set("precision""3"); 
  7.  echo $num// 0.123 
  8.  //超過精度值,保留3位 
  9.  ini_set("precision""5"); 
  10.  echo $num// 0.12346 
  11.  //超過精度值,保留5位這種情況下,精度值等價(jià)于小數(shù)點(diǎn)后保留幾位。 

整數(shù)部分大于 0 情況,代碼如下:

  1. $num = 12.12345600000000000; 
  2.  //整數(shù)部分為12 ,位數(shù)為 2 ,小數(shù)部分末尾的 0 不計(jì)入位數(shù),位數(shù)為6,所以總位數(shù)為 2 + 6 
  3.  ini_set("precision""12"); 
  4.  echo $num// 12.123456 
  5.  //未超過精度值,顯示的結(jié)果為 12.123456 
  6.  ini_set("precision""3"); 
  7.  echo $num// 12.1 
  8.  //超過精度值,整數(shù)部分位數(shù)為 2 ,所以只保留一位小數(shù) 
  9.  ini_set("precision""5"); 
  10.  echo $num// 12.123 
  11.  //超過精度值,整數(shù)部分位數(shù)為 2 ,所以只保留3位小數(shù)可以看到小數(shù)點(diǎn)后保留的位數(shù)跟精度已經(jīng)整數(shù)部分的位數(shù)有關(guān)。 

整數(shù)部分大于 0 情況 之二,代碼如下:

  1. $num = 12345678.12345600000000000; 
  2. //整數(shù)部分為12345678 ,位數(shù)為 8 ,小數(shù)部分末尾的 0 不計(jì)入位數(shù),位數(shù)為6,所以總位數(shù)為 8 + 6 
  3. ini_set("precision""12"); 
  4. echo $num// 12345678.1235 
  5. //超過精度值,顯示的結(jié)果為 12345678.1235 
  6. ini_set("precision""3"); 
  7. echo $num// 1.23E+7 
  8. //超過精度值,且整數(shù)部分位數(shù)超過精度,小數(shù)部分舍棄,且整數(shù)部分只取3位 
  9. ini_set("precision""5"); 
  10. echo $num// 12346000 
  11. //超過精度值,且整數(shù)部分位數(shù)超過精度,小數(shù)部分舍棄,且整數(shù)部分只取5位 

上述例子中可以看到,精度值也關(guān)系到整數(shù)部分的截取,注意到最后兩個(gè)例子中顯示的方式不一樣,一個(gè)是使用科學(xué)計(jì)數(shù)法,一個(gè)是后面用 0 補(bǔ),通過實(shí)驗(yàn)得出的結(jié)論是當(dāng)整數(shù)部分的位數(shù)減去 精度值 大于 4 的時(shí)候,使用科學(xué)計(jì)數(shù)法的方式,否則后面用 0 補(bǔ),換句話說,就是整數(shù)部分位數(shù)超過精度值后,截?cái)嗪?補(bǔ) 0 的個(gè)數(shù)不會超過 4.

浮點(diǎn)數(shù)運(yùn)算,代碼如下:

  1. $num1 = 1331625729.687; 
  2.  $num2 = 1331625730.934; 
  3.  ini_set("precision""8"); 
  4.  echo $num1 . ' 
  5. '; 
  6.  echo $num2 . ' 
  7. '; 
  8.  $sub = $num1 - $num2
  9.  echo $sub . ' 
  10. '; 
  11. //輸出的結(jié)果為: 
  12. /* 
  13.  1331625700 
  14.  1331625700 
  15.  -1.247 
  16. */ 

上述例子就說明了精度值只是控制顯示結(jié)果,內(nèi)部存儲還是原始值,所以 $sub 的值為1331625729.687減1331625730.934。

PHP內(nèi)置的echo, var_dump,json_encode,字符串拼接等函數(shù)(指令)在顯示浮點(diǎn)數(shù)時(shí)都有問題,導(dǎo)致精度丟失.實(shí)例代碼如下:

  1. <?php 
  2.    $a = 1315537636.338467; 
  3.    printf("%f"$a); echo "n"
  4.    echo $a . "n"
  5.    echo $aecho "n"
  6. ?> 
  7.   /*結(jié)果 
  8.   1315537636.338467 
  9.   1315537636.3385 
  10.   1315537636.3385 
  11. */ 

也就是說,用PHP最順手的方法將浮點(diǎn)數(shù)轉(zhuǎn)成字符串或者顯示是不行的,必須使用printf/sprintf將浮點(diǎn)數(shù)轉(zhuǎn)成字符串.

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 精品一区二区视频 | 久久久久久影院 | 成人污 | 欧美一级片在线看 | 麻豆精品久久 | 国产高清免费 | 正在播放国产一区 | 久久久久久久久久国产精品 | 国产精品污www在线观看 | 久久久精品999 | 国产亚洲综合性久久久影院 | 久久99国产精品久久99果冻传媒 | 日韩欧美黄色 | a爱视频| 亚洲精品在线电影 | 高清18麻豆 | 亚洲精品欧美一区二区三区 | 99视频在线播放 | 狠狠色狠狠色综合人人 | 福利影院在线 | 在线看黄色av | 秋霞视频在线 | 高清成人av | 日本一区二区三区久久 | 俄罗斯一级黄色毛片 | 成人av影视 | 日本一区二区三区四区视频 | 狠狠亚洲 | 国产黄色电影 | 欧美在线播放一区 | 欧美日韩免费视频 | 亚洲欧美在线播放 | 国产一区二区三区在线免费观看 | 日韩在线播放视频 | 国产精品乱码一区二区三区 | 亚洲一区精品视频 | 吞噬星空在线观看 | 黄色免费看网站 | 国产搞黄色 | 亚洲国产成人精品女人久 | 国产色网 |