2011-09-03 192 views
18

譯註:學說2 - 2位小數位在浮點數上嗎?

/** 
* @ORM\Column(type="float", scale="2") 
*/ 
protected $curr_price; 

我使用它的Symfony 2

而且這個領域變成一個雙在MySQL數據庫,而不是2點精度浮點數。

我在做什麼錯?我試圖刪除數據庫,重新插入等...

+1

爲浮動點(通常雖然不是與你的問題,存儲價格)一個非常糟糕的做法。 – Martijn

+0

請詳細說明。 – Tool

+0

請參閱http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when。 – Martijn

回答

27

precisionscale屬性只能使用decimal映射類型(link)。我建議你使用decimal類型。

至於爲什麼它創建一個雙字段而不是float字段,我不完全確定。它可能與兼容所有支持的數據庫有關。我沒有看到double映射類型,所以我認爲它們都使用相同的類型。

8
在*

.yml

curr_price: 
    type: decimal 
    precision: 10 
    scale: 2 
7
/** 
* @ORM\Column(type="float", scale=2) 
*/ 
protected $curr_price; 

規模應該是一個整數,您使用的是串

+0

根據[文檔](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping): * scale :(可選,默認值0)十進制(精確數字)列的比例(**僅適用於十進制列**),它表示小數點右側的位數,且不得大於精度。* –