2011-09-03 8 views
18

Ek Açıklama:Doktrin 2 - 2 bir kayan nokta üzerinde ondalık basamak?

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

Ben Symfony 2.

ile kullanıyorum Ve bu alan 2 nokta hassas bir çift MySQL veritabanı yerine şamandıra haline gelir.

Neyi yanlış yapıyorum? Ben Hem precision ve scale özellikleri yalnızca decimal haritalama türü (link) ile çalışmak

+1

) çok kötü bir uygulama. – Martijn

+0

Lütfen daha fazla detay verin. – Tool

+0

Lütfen bkz. Http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when. – Martijn

cevap

27

... vb reinserting, DB silme çalıştı. decimal türünü kullanmanızı öneririm.

Neden şamandıra yerine bir çift alan yarattığına dair, tam olarak emin değilim. Muhtemelen desteklenen tüm veritabanlarıyla uyumlu olmakla ilgisi vardır. double eşleme türünden bahsetmiyorum, bu yüzden her ikisi için de aynı tür kullandıklarını farz ediyorum.

curr_price: 
    type: decimal 
    precision: 10 
    scale: 2 
8

bir tamsayı olmalıdır ve bir dize kullandığınız

bir kayan noktalı (genellikle olduğu gibi, Sorunuza depolama fiyatları ile ilgili olmasa da
7
/** 
* @ORM\Column(type="float", scale=2) 
*/ 
protected $curr_price; 

ölçekli .yml * içinde

+0

[docs] 'a (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping) göre: * ölçek: (isteğe bağlı, varsayılan 0) Ondalık noktasının sağındaki basamak sayısını temsil eden ve kesinlikten büyük olmamak üzere, ondalık (tam sayısal) sütun (** yalnızca ondalık sütun ** için geçerlidir) ölçeği. –