濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > php如何比較兩個(gè)浮點(diǎn)數(shù)是否相等詳解

php如何比較兩個(gè)浮點(diǎn)數(shù)是否相等詳解

熱門標(biāo)簽:浙江外呼電話系統(tǒng)軟件 銀川ai電話機(jī)器人 芒果電銷機(jī)器人 地圖標(biāo)注風(fēng)向標(biāo) 電梯外呼線路板維修視頻 上海公司外呼系統(tǒng)線路 臨沂智能電銷機(jī)器人軟件 十堰ai電話機(jī)器人效果怎么樣 安陽(yáng)自動(dòng)外呼系統(tǒng)價(jià)格是多少

前言

本文主要給大家介紹了關(guān)于利用php如何比較浮點(diǎn)數(shù)是否相等的相關(guān)內(nèi)容,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

看下面這段代碼, 0.9+0.1 的相加結(jié)果與 1 進(jìn)行比較

?php
$a = 0.9;
$b = 0.1;
$total = $a + $b;
var_dump($total);
if (1 == $total) {
 echo "true";
} else {
 echo "false";
}
echo "\n";

if (1.0 == $total) {
 echo "true";
} else {
 echo "false";
}
?>

打印結(jié)果是:

float(1)
true
true

再看下面這段代碼, 0.6+0.1+0.1+0.1+0.1 的相加結(jié)果與 1 進(jìn)行比較

?php
$a = 0.6;
$b = 0.1;
$c = 0.1;
$d = 0.1;
$e = 0.1;

$total = $a + $b + $c + $d + $e;
var_dump($total);

if (1 == $total) {
 echo "true";
} else {
 echo "false";
}
echo "\n";

if (1.0 == $total) {
 echo "true";
} else {
 echo "false";
}

?>

打印結(jié)果是:

float(1)
false
false

為什么這兩段代碼結(jié)果不一樣?把兩段代碼里面的 $total 分別以精度20位的形式打印出來(lái) printf("%.20f\n", $total); ,結(jié)果如下:

1.00000000000000000000
0.99999999999999988898

出現(xiàn)這個(gè)問(wèn)題是因?yàn)楦↑c(diǎn)數(shù)計(jì)算涉及精度。

關(guān)于php里面的浮點(diǎn)數(shù), 官方手冊(cè) 上有相關(guān)解釋

看官方手冊(cè)里面關(guān)于浮點(diǎn)數(shù)的提示,如下圖所示。里面提到 永遠(yuǎn)不要比較兩個(gè)浮點(diǎn)數(shù)是否相等

那么有什么辦法可以比較兩個(gè)浮點(diǎn)數(shù)是否相等呢?

方法一、

看如下代碼示例

?php

$a = 0.6;
$b = 0.1;
$c = 0.1;
$d = 0.1;
$e = 0.1;
$epsilon = 0.00001;

$total = $a + $b + $c + $d + $e;

if(abs($total-1)  $epsilon) {
 echo "true";
} else {
 echo "false";
}
echo "\n";

if(abs($total-1.0)  $epsilon) {
 echo "true";
} else {
 echo "false";
}

?>

結(jié)果輸出為:

true
true

方法二、

?php

$a = 0.6;
$b = 0.1;
$c = 0.1;
$d = 0.1;
$e = 0.1;

$total = $a + $b + $c + $d + $e;

if(1.0 == round($total, 5)) {
 echo "true";
} else {
 echo "false";
}
?>

結(jié)果輸出為:

true

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • php判斷兩個(gè)浮點(diǎn)數(shù)是否相等的方法
  • 簡(jiǎn)單談?wù)刾hp浮點(diǎn)數(shù)精確運(yùn)算
  • PHP中兩個(gè)float(浮點(diǎn)數(shù))比較實(shí)例分析
  • PHP中浮點(diǎn)數(shù)計(jì)算比較及取整不準(zhǔn)確的解決方法
  • PHP浮點(diǎn)數(shù)精度問(wèn)題匯總
  • PHP數(shù)據(jù)類型之整數(shù)類型、浮點(diǎn)數(shù)的介紹
  • PHP浮點(diǎn)數(shù)的一個(gè)常見(jiàn)問(wèn)題
  • php的sprintf函數(shù)的用法 控制浮點(diǎn)數(shù)格式
  • php 浮點(diǎn)數(shù)比較方法詳解

標(biāo)簽:徐州 遂寧 常州 寧夏 吐魯番 遵義 武威 荊門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php如何比較兩個(gè)浮點(diǎn)數(shù)是否相等詳解》,本文關(guān)鍵詞  php,如何,比較,兩個(gè),浮,點(diǎn)數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php如何比較兩個(gè)浮點(diǎn)數(shù)是否相等詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php如何比較兩個(gè)浮點(diǎn)數(shù)是否相等詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    岑溪市| 昭平县| 万源市| 延寿县| 峡江县| 岳阳县| 宜昌市| 尚志市| 玉龙| 凤凰县| 潞城市| 海晏县| 昌邑市| 昆山市| 那坡县| 淳化县| 朝阳市| 赤壁市| 贞丰县| 榆树市| 鄂伦春自治旗| 洪湖市| 康乐县| 华亭县| 招远市| 伊春市| 柳林县| 南宫市| 乃东县| 扶绥县| 东丰县| 湟中县| 寿光市| 定兴县| 固原市| 五华县| 泽普县| 南川市| 襄汾县| 泸州市| 桐庐县|