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

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。郵箱:3140448839@qq.com。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處:三五互聯(lián)知識庫 » php如何比較浮點數(shù)是否相等

登錄

找回密碼

注冊

主站蜘蛛池模板: 亚洲综合国产一区二区三区| 亚洲国产成人久久77| 亚洲精品www久久久久久| 性色av无码久久一区二区三区| 亚洲全网成人资源在线观看| 亚洲国产欧美一区二区好看电影| 日韩精品 中文字幕 视频在线| 国产日韩精品视频无码| 亚洲色成人一区二区三区人人澡人人妻人人爽人人蜜桃麻豆 | 精品亚洲女同一区二区| 久9re热视频这里只有精品免费| 免费国产高清在线精品一区| 蜜臀av入口一区二区三区| 国产乱码精品一区二区三| 国产边打电话边被躁视频| 国产精品中文字幕第一页| 欧美va天堂在线电影| 日韩视频一区二区三区视频| 一区二区传媒有限公司| 免费无码成人AV片在线| 国产中文字幕在线一区| 亚洲の无码国产の无码步美| 午夜成人性爽爽免费视频| 蜜芽亚洲AV无码精品国产午夜 | 亚洲一级特黄大片在线播放| 国产丰满乱子伦无码专区| 最新亚洲人成网站在线影院 | 欧美老熟妇乱子伦牲交视频 | 熟女一区二区中文字幕| 免费全部高h视频无码| 成年站免费网站看v片在线| 一区二区三区四区激情视频| 毛片一区二区在线看| 男女做aj视频免费的网站| 亚洲www永久成人网站| 色一伊人区二区亚洲最大| 久久香蕉欧美精品| 夜夜爽77777妓女免费看| 国产无人区码一区二区| 无遮挡又黄又刺激的视频| 天天躁日日躁狠狠躁性色avq|