使用如下代码进行查询(PDO)
$stmt = $dbh->prepare($sql);
$stmt->execute($parm);
$record = $stmt->fetch( PDO::FETCH_ASSOC);假设有个字段AAA是FLOAT型,在数据库中,保存数值为0.1,数据库中显示也是正确的,为0.1
但查询结果,却是[AAA] => 0.10000000000000001,莫名的在小数点后加了很多位数 请问这是什么原因,需要对PDO如何设置才可以避免?
用pgsql或者sqlsrv驱动都可能有这问题,mysql还没发现该问题
$stmt = $dbh->prepare($sql);
$stmt->execute($parm);
$record = $stmt->fetch( PDO::FETCH_ASSOC);假设有个字段AAA是FLOAT型,在数据库中,保存数值为0.1,数据库中显示也是正确的,为0.1
但查询结果,却是[AAA] => 0.10000000000000001,莫名的在小数点后加了很多位数 请问这是什么原因,需要对PDO如何设置才可以避免?
用pgsql或者sqlsrv驱动都可能有这问题,mysql还没发现该问题
如果有高手帮从晶体管门电路出发一直到PDO源码详细讲解问题如何产生并最终给出解决方案,那这是个经典的讲解;
如果简单点,有高手帮忙指点出解决方案。那我也不胜感激。基础知识虽然我久没看了,但也不好意思麻烦高手在这帮我当老师,这是很多年前的老师做的事。
如果自己用round做个转换是可以得到0.1.但如果每个字段还需要自己转换那处理就很复杂了。我需要记住每个float字段,然后我还需要知道它得保留多少个小数位。这工作就像是噩梦。
所以我想请教下各位高手,PDO要如何设置处理,能保证查询得到的数值和存进去或者数据库显示的是一样。
这个问题应该很普遍吧,大家都如何处理?