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)を使用すると、この丸め効果は得られませんが、2 倍のストレージが使用されます。

于 2013-08-12T10:35:51.690 に答える