0

我的问题是小数部分舍入不好。我在循环中保存数据。只有最后更新的项目被错误地更改。
例如 - 保存的号码是 13778.12888,表中的值为 13778,1。保存:
$this->save($data) - debug($data)显示正确的值。

4

1 回答 1

0

FLOAT(n)当您选择定义为n 小于 25的浮点类型的列时,MySQL 似乎将输出四舍五入到 6 位有效数字,这绝对是令人惊讶的。但是,该值以 IEEE 单精度浮点数的全精度存储。要获得完全精确的值,你可以使用一个简单的技巧,比如加 0;看看这个:

create table numbers (f float(24));
insert into numbers set f = 12345678;
select f from numbers;
-- 12345700
select f + 0 from numbers;
-- 12345678

使用双精度类型FLOAT(53)您不会获得这种舍入效果,但它会使用两倍的存储空间。

于 2013-08-12T10:35:51.690 回答