不要用等號去比較浮點數的真理

2021-08-03 20:36:54 字數 783 閱讀 2468

「不要用等號去比較浮點數」的「真理」--有時候浮點數比較不會出問題,但是並不是所有情況的浮點數比較都是對的,請看下面例子。

<?php 

$sum = "12300.00";

$a = "10000.30";

$b = "2000.30";

$c = "299.40";

$sum = (float) $sum

;$s = (float) ($a+$b+$c

);var_dump($sum, $s

);var_dump($sum==$s

);?>

結果是:

float(12300)

float(12300)

bool(false)

*其實要比較兩個浮點數的大小,可以用bccomp(引數1,引數2,小數字)來比較。

<?php 

$sum = "12300.00";

$a = "10000.30";

$b = "2000.30";

$c = "299.40";

$sum = (float) $sum

;$s = (float) ($a+$b+$c

);var_dump($sum, $s

);var_dump(bccomp($sum,$s,2));

?>

結果是:

loat(12300)

float(12300)

int(0) // 0表示兩個浮點數值相等

不要用等號去比較浮點數的真理

不要用等號去比較浮點數 的 真理 有時候浮點數比較不會出問題,但是並不是所有情況的浮點數比較都是對的,請看下面例子。sum 12300.00 a 10000.30 b 2000.30 c 299.40 sum float sum s float a b c var dump sum,s var du...

浮點數的比較

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

浮點數的比較

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