美好的一天。我在使用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
变量中获取$price
值FLOAT(9,2)
作为列类型(没有舍入函数)?
谢谢。
答案 0 :(得分:0)
如上所述:
1.01不能完全表示为浮点数。如您所见,最接近的是1.0099999 ....如果您在数据库中存储货币值,请不要使用浮点数。使用DECIMAL类型或int并将您的美元/美分值转换为仅美分