2011-09-03 55 views
18

chú giải:Học thuyết 2 - 2 chữ số thập phân trên phao?

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

Tôi đang sử dụng nó với Symfony 2.

Và lĩnh vực này sẽ trở thành một đôi trong MySQL cơ sở dữ liệu thay vì thả nổi với 2 điểm chính xác.

Tôi đang làm gì sai? Tôi đã thử xóa DB, chèn lại vv ...

+1

Mặc dù không liên quan đến câu hỏi của bạn, giá lưu trữ như là một điểm nổi (nói chung) một thực hành rất xấu. – Martijn

+0

Vui lòng giải thích thêm. – Tool

+0

Vui lòng xem http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-should-i-use-and-when. – Martijn

Trả lời

27

Cả hai thuộc tính precisionscale chỉ hoạt động với decimal loại ánh xạ (link). Tôi đề nghị bạn sử dụng loại decimal.

Vì sao nó tạo ra trường kép thay vì nổi, tôi không hoàn toàn chắc chắn. Nó có thể phải làm với việc tương thích với tất cả các cơ sở dữ liệu được hỗ trợ. Tôi thấy không có đề cập đến loại hình ánh xạ double vì vậy tôi cho rằng chúng sử dụng cùng loại cho cả hai.

8

trong * .yml

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

quy mô phải là một số nguyên, và bạn đang sử dụng một chuỗi

+0

Theo [tài liệu] (http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping): * tỷ lệ: (tùy chọn, mặc định 0) Tỷ lệ cho cột thập phân (số chính xác) (** chỉ áp dụng cho cột thập phân **), đại diện cho số chữ số ở bên phải dấu thập phân và không được lớn hơn độ chính xác. * –

Các vấn đề liên quan