2 回答

TA貢獻(xiàn)1851條經(jīng)驗 獲得超5個贊
因為浮點值不精確,用它們做數(shù)學(xué)運算只會加劇不精確性。
$a = 4.60;
$b = 5.05;?
$c = 2.60;
$r = ($a + $b + $c) * 0.1;
// greatly increase the floating point display precision
ini_set('precision', 30);
var_dump( $a, $b, $c, $r, 1.225 );
輸出:
float(4.59999999999999964472863211995)
float(5.04999999999999982236431605997)
float(2.60000000000000008881784197001)
float(1.22499999999999986677323704498)
float(1.22500000000000008881784197001)
這就是為什么你永遠(yuǎn)不應(yīng)該使用浮點數(shù)來代表金錢。

TA貢獻(xiàn)1951條經(jīng)驗 獲得超3個贊
當(dāng)您計算浮點數(shù) (?$r = ($a + $b + $c) * 0.1;
) 時,它的結(jié)果不完全是 1.225,而是類似于1.22499999999999986677323704498
。這就是它發(fā)生的原因。
所以永遠(yuǎn)不要相信浮點數(shù)結(jié)果的最后一位,也不要直接比較浮點數(shù)是否相等。
- 2 回答
- 0 關(guān)注
- 128 瀏覽
添加回答
舉報