使用PHP和mysqli从float()列中选择float number
你好。我在使用使用PHP和mysqli从float()列中选择float number,php,floating-point,mysqli,bind-variables,Php,Floating Point,Mysqli,Bind Variables,你好。我在使用mysqliclass的绑定变量从MySQL数据库中选择float number时遇到问题 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.00999
mysqli
class的绑定变量从MySQL数据库中选择float number时遇到问题
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。但是为什么呢
当我将表中的列类型更改为DOUBLE(9,2)
时,一切正常,$price
值正好是1.01
是否有任何方法可以获取1.01
列类型为FLOAT(9,2)
的$price
变量的值(无舍入函数)
谢谢。如上所述:
1.01不能精确表示为浮点数。如你所见,你能来的最近距离是1.0099999。。。。如果要在数据库中存储货币值,请不要使用浮动。使用十进制类型或整数,并将美元/美分值转换为美分
在处理货币值时,最好使用十进制而不是浮点数,因为这有助于防止任何语言中浮点数出现的小舍入错误,甚至可以将值存储为整数美分而不是十进制美元。1.01不能准确地表示为浮点数。如你所见,你能来的最近距离是1.0099999。。。。如果要在数据库中存储货币值,请不要使用浮动。使用十进制类型或整数,并将美元/美分值转换为美分。