2013-06-24 58 views
0

我有一個SQL值& PHP的問題。 我正在做2請求,一個將值添加到我的SQL和另一個減去這個結果。SQL浮點值不= 0

這就是:

$totaux = $montant_actuel + ($nbre_dej * $prix_dejeuner) + ($nbre_din * $prix_diner) + ($nbre_soir_etape * $prix_etape); 

當我這樣做,它等於:

sum = 0 + (15.8*1) + (15.8*1) + (57.8*0)

所以我必須:31.6

但是,當我試圖要做:

$totaux = $montant_actuel - ($nbre_dej * $prix_dejeuner) - ($nbre_din * $prix_diner) - ($nbre_soir_etape * $prix_etape); 

sum = 31.6 - (15.8*1) - (15.8*1) - (57.8*0)

然後,當我將其插入到我的數據庫,我有這樣的記錄:的0.0000000000000142109而不是0

我不明白爲什麼會這樣。

+1

你應該閱讀[什麼每個程序員應該知道浮點運算(HTTP://浮點貴。 de /) – 2013-06-24 10:10:01

+0

http://stackoverflow.com/questions/3726721/php-math-precision/3726761#3726761 –

回答

1

它似乎是一個簡單的舍入數據庫內部的錯誤。如果您使用floatdouble將其更改爲decimal以避免舍入錯誤。

+0

十進制顯示「,」和四捨五入後的所有0值嗎?它非常適合我的使用。謝謝 – user2515736

+0

十進制不輪,但可以指定小數位數。如果需要,您可以在寫入數據庫之前手動進行PHP輪詢。 –

0

它可以用數字精確度的問題......使用一些功能從:here