2012-12-10 30 views
2

我想在PHP中進行浮點型比較時嘗試建立我需要的增量。 我想仔細看看我的變量以查看差異。PHP - 獲取浮點型變量內部值

我有2個計算變量,$ a,$ b。

$a = some_function(); 

$b = some_other_function(); 

如何查看PHP使用的確切數量?

我想他們這個公式,在那裏我需要指定三角洲比較:

$delta = 0.00001; 
if (abs($a-$b) < $delta) { 
    echo "identical"; 
} 

的var_dump($ A,$ B)返回1.6215; 1.6215。但我知道它們並不完全相同,因爲

var_dump($a === $b); 

評估爲false;

爲什麼var_dump()不能打印內部值?

回答

10

在PHP中,浮點數的打印值取決於PHP配置「精度」。

可以更改與:

ini_set('precision', YOUR_DESIRED_PRECISION_AS_INTEGER); 

例如用:

ini_set('precision', 18); 

你的號碼可能會顯示類似:

浮動1.62149999999999994

浮動1.6214999999999995

所以現在他們之間的區別就更清楚了。

所以你的delta可能是:$ delta = 0.00000000000001;這真的取決於你正在尋找的精度。

如果您需要做精確的數學計算,確實有看BC Math Functions.


參考/來源

PHP - Floating point numbers

PHP - Floating point numbers - User Contributed Notes - deminy at deminy dot net

Codepad