2013-08-12 12 views
0

我的問題是小數部分四捨五入。我將數據保存在循環中。只有上次更新的項目更改不正確。
例如 - 保存的號碼是13778.12888,表中的值是13778,1。正在保存:
$this->save($data) - debug($data)顯示正確的值。保存過程中小數部分四捨五入

+0

你是如何定義數據庫中的列的? – Joni

+0

FLOAT(11)。先行值是正確的,只有最後更新的項目不是。 – Roman

回答

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)你沒有得到這個四捨五入的效果,但它會使用兩倍的存儲。

+0

謝謝。你的建議很有幫助。 – Roman