0

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

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)

谢谢你。

4

1 回答 1

0

如上所述:

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

于 2014-10-22T19:37:25.257 回答