2013-06-24 55 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