浮點型別的數字比較

2021-08-18 03:49:28 字數 979 閱讀 1983

例子:

$x=10-7.9;

$y=2.1;

var_dump($x==$y);

結果為bool(false)。

再看下面的結果:

結果為

有沒有很驚喜。。。。

這是因為浮點數計算涉及精度,當浮點數轉為二進位制時有可能會造成精度丟失。

比較浮點型別的數字時應該用

bccomp( string$left_operand, string$right_operand[, int$scale= int

] ).

如果兩個數相等返回0, 左邊的數left_operand比較右邊的數right_operand大返回1, 否則返回-1.

<?php

echo 

bccomp

('1'

, '2'

) . 

"\n"

;   

// -1

echo 

bccomp

('1.00001'

, '1', 3

); // 0

echo 

bccomp

('1.00001'

, '1', 5

); // 1

?>

C語言中浮點型別的比較

我們都知道c中整型資料在計算機裡是以二進位制數儲存的,但是關於浮點數呢比如float a 125.125計算機將其轉化為1111101.001b的二進位制數,可是問題在於計算機根本不認識小數點。歷史上計算機科學家們曾提出過多種解決方案,最終獲得廣泛應用的是ieee 754標準中的方案,目前最新版的標...

浮點數的比較

浮點數的比較 在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 首先,浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是數字計算機,不是模擬機,數字機的離散化的資料表...

浮點數的比較

在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 首先,浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是數字計算機,不是模擬機,數字機的離散化的資料表示方法自然無法...