欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年02月12日 10:17:23   作者:nemo  
這篇文章主要給大家介紹了關(guān)于php如何比較兩個浮點數(shù)是否相等的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

<?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 進行比較

<?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位的形式打印出來 printf("%.20f\n", $total); ,結(jié)果如下:

1.00000000000000000000
0.99999999999999988898

出現(xiàn)這個問題是因為浮點數(shù)計算涉及精度。

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

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

那么有什么辦法可以比較兩個浮點數(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é)

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

相關(guān)文章

  • PHP閉包定義與使用簡單示例

    PHP閉包定義與使用簡單示例

    這篇文章主要介紹了PHP閉包定義與使用,結(jié)合簡單實例形式分析了php閉包的簡單定義、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2018-04-04
  • 解析smarty 截取字符串函數(shù) truncate的用法介紹

    解析smarty 截取字符串函數(shù) truncate的用法介紹

    本篇文章是對smarty 截取字符串函數(shù) truncate的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • JS實現(xiàn)php的偽分頁

    JS實現(xiàn)php的偽分頁

    假如某一個頁面的數(shù)據(jù)很多,不方便全都顯示出來,而且假設(shè)里面有個播放器,不希望在翻頁的時候播放器會終止的話,就可以采用這個方法盡管可以用Ajax,但是在數(shù)據(jù)比較少的情況下,這個方法更有優(yōu)勢
    2008-05-05
  • php 多進程編程父進程的阻塞與非阻塞實例分析

    php 多進程編程父進程的阻塞與非阻塞實例分析

    這篇文章主要介紹了php 多進程編程父進程的阻塞與非阻塞,結(jié)合實例形式分析了php 多進程編程中父進程的阻塞、等待、子進程退出、非阻塞等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • PHP中for與foreach的區(qū)別分析

    PHP中for與foreach的區(qū)別分析

    foreach 僅能用于數(shù)組,當(dāng)試圖將其用于其它數(shù)據(jù)類型或者一個未初始化的變量時會產(chǎn)生錯誤,在PHP5中也能遍歷對象。
    2011-03-03
  • PHPLog php 程序調(diào)試追蹤工具

    PHPLog php 程序調(diào)試追蹤工具

    本文將為你介紹一個調(diào)試工具,它可以替代echo,print_r,var_dump等系統(tǒng)函數(shù),還具有調(diào)用棧及參數(shù)追蹤功能. 簡言之,它是debug_backtrace的web版本.
    2009-09-09
  • PHP spl_autoload_register實現(xiàn)自動加載研究

    PHP spl_autoload_register實現(xiàn)自動加載研究

    spl_autoload_register()函數(shù)應(yīng)該是主流框架使用最多的也是非常核心的函數(shù)之一,可實現(xiàn)自動注冊函數(shù)和類,實現(xiàn)類似__autoload() 函數(shù)功能,簡化了類的調(diào)用與加載,提高了工作的效率
    2011-12-12
  • PHP函數(shù)func_num_args用法實例分析

    PHP函數(shù)func_num_args用法實例分析

    這篇文章主要介紹了PHP函數(shù)func_num_args用法,結(jié)合實例形式較為詳細的分析了func_num_args函數(shù)返回函數(shù)參數(shù)的相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • How do I change MySQL timezone?

    How do I change MySQL timezone?

    The MySQL timezone is set to MST (-7 hours GMT/UTC) and is not configurable by you. MySQL is only capable of having 1 timezone setting per mysql daemon. Therefore, you cannot select NOW() and expect a result in a timezone other than MST.
    2008-03-03
  • 基于php數(shù)組中的索引數(shù)組和關(guān)聯(lián)數(shù)組詳解

    基于php數(shù)組中的索引數(shù)組和關(guān)聯(lián)數(shù)組詳解

    下面小編就為大家分享一篇基于php數(shù)組中的索引數(shù)組和關(guān)聯(lián)數(shù)組詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論