我的问题是小数部分舍入不好。我在循环中保存数据。仅最后更新的项目被错误更改。
例如 - 保存的号码是 13778.12888,表中的值是 13778,1。保存:$this->save($data) - debug($data)
显示正确的值。
最佳答案
当您选择定义为FLOAT(n)
且n小于25的浮点类型列时,MySQL似乎将输出四舍五入为6位有效数字,这绝对令人惊讶。不过,该值以 IEEE 单精度 float 的全精度存储。要获得完全精度的值,您可以使用一个简单的技巧,例如添加 0;检查一下:
create table numbers (f float(24));
insert into numbers set f = 12345678;
select f from numbers;
-- 12345700
select f + 0 from numbers;
-- 12345678
使用 double 类型FLOAT(53)
,您不会获得这种舍入效果,但它将使用两倍的存储空间。
关于mysql - 保存期间小数部分舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182186/