PHP高精度函數(shù)

平時(shí)在做開發(fā)的時(shí)候,會(huì)遇到計(jì)算結(jié)果出錯(cuò)的問題,明明計(jì)算的方法正確,但結(jié)果不對(duì)。

比如0.58*100,得到的是57.99999999999999,而不是58

出現(xiàn)這種情況,并不是PHP的bug,而是二進(jìn)制浮點(diǎn)計(jì)算的問題,各種語言都存在這個(gè)問題。

具體原理自行搜索,這里就不細(xì)講,下面列出PHP這邊的解決方案,使用高精度函數(shù)

????????bcadd — 將兩個(gè)高精度數(shù)字相加

  bccomp — 比較兩個(gè)高精度數(shù)字,返回-1, 0, 1

  bcdiv — 將兩個(gè)高精度數(shù)字相除

  bcmod — 求高精度數(shù)字余數(shù)

  bcmul — 將兩個(gè)高精度數(shù)字相乘

  bcpow — 求高精度數(shù)字乘方

  bcpowmod — 求高精度數(shù)字乘方求模,數(shù)論里非常常用

  bcscale — 配置默認(rèn)小數(shù)點(diǎn)位數(shù),相當(dāng)于就是Linux bc中的”scale=”

  bcsqrt — 求高精度數(shù)字平方根

  bcsub — 將兩個(gè)高精度數(shù)字相減

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最大支持3位精度計(jì)算,具體還沒有研究 bcadd — 將兩個(gè)高精度數(shù)字相加 bccomp — 比較兩個(gè)高精度...
    會(huì)寫bug的鳥閱讀 1,017評(píng)論 0 1
  • int intval ( mixed $var [, int $base ] ) 通過使用特定的進(jìn)制轉(zhuǎn)換(默...
    君滿樓001閱讀 8,659評(píng)論 0 2
  • 不要用浮點(diǎn)數(shù)進(jìn)行比較和數(shù)學(xué)運(yùn)算轉(zhuǎn)化為整型運(yùn)算 試用bcmath庫(php自帶) bcadd — 將兩個(gè)高精度數(shù)字相...
    sorry510閱讀 1,516評(píng)論 0 2
  • 因?yàn)樽罱鲆粋€(gè)圖表,x軸的疊加為0.1,但是在進(jìn)行浮點(diǎn)類型比較時(shí)出現(xiàn)一個(gè)頭疼的問題,廢話不說請(qǐng)看以下案例 以上代...
    胡亂唱歌ing閱讀 1,081評(píng)論 0 1
  • 坦白講我不是一個(gè)負(fù)責(zé)人的家長(zhǎng),因?yàn)槲易约荷砩系姆N種問題需要去成長(zhǎng)去完善;但是我希望通過我的學(xué)習(xí)可以成為負(fù)責(zé)人的家長(zhǎng)...
    希多樂閱讀 1,429評(píng)論 0 0

友情鏈接更多精彩內(nèi)容