使用PHP和mysqli从FLOAT()列中选择浮点数

时间:2011-03-18 16:54:03

标签: php floating-point mysqli bind-variables

美好的一天。我在使用mysqli类的绑定变量从MySQL数据库中选择浮点数时遇到问题。

price列的类型为FLOAT(9,2),其值为1.01

简化的代码:

$stmt = $dbh->prepare('SELECT price FROM goods WHERE id=5');
$stmt->execute();
$stmt->bind_result(&$price);
$stmt->fetch();
echo $price;
// 1.0099999904633

据我所知,mysqli会自动将其加倍。但为什么呢?

当我将表格中的列类型更改为DOUBLE(9,2)时,一切正常,$price值正好是1.01

有没有办法在1.01变量中获取$priceFLOAT(9,2)作为列类型(没有舍入函数)?

谢谢。

1 个答案:

答案 0 :(得分:0)

如上所述:

  

1.01不能完全表示为浮点数。如您所见,最接近的是1.0099999 ....如果您在数据库中存储货币值,请不要使用浮点数。使用DECIMAL类型或int并将您的美元/美分值转换为仅美分