2012-06-11 37 views
6

Làm cách nào để đặt độ chính xác và tỷ lệ thập phân trong thực thể symfony2? Tôi đã xác định vĩ độ trong các lĩnh vực kinh độ sử dụng kiểu dữ liệu số thập phân trong thực thể của tôi như thế này:Làm tròn số thập phân trong biểu mẫu sửa đổi Symfony2 + Doctrine2

/** 
* @ORM\Column(type="decimal", precision="10", scale="6", nullable=true) 
*/ 
protected $latitude; 

Khi sự bền bỉ đối tượng mới nó tiết kiệm số thập phân một cách chính xác (tôi có thể thấy 52,406374 trong phpMyAdmin). Tuy nhiên khi hiển thị biểu mẫu chỉnh sửa, số được làm tròn thành 52,406 và sau khi cập nhật nó được lưu trữ trong mysql là 52.406000. Có lẽ đã xảy ra sự cố với cấu hình Doctrine của tôi, nhưng tôi không biết điều gì.

Tại sao vĩ độ và kinh độ lại được làm tròn?

Tìm thấy một giải pháp:

thành phần Form Symfony của renders trường mẫu là số thập phân type = "text". Khi sử dụng:

->add('latitude', 'number', array(
    'precision' => 6, 
)) 

Kết quả được hiển thị đúng cách. Chủ đề từ nhận xét không mô tả sự cố của tôi. Tôi đoán họ đã sửa lỗi chính xác 'chuyển đổi sang phao'. Khi tôi đang hiển thị vĩ độ trong mẫu cành, nó đã hiển thị giá trị thích hợp (không làm tròn).

+0

Không phải do [this] (http://stackoverflow.com/questions/5635500/doctrine-2-decimal-can-only-contain-14-digits)? – jkucharovic

Trả lời

2

Có thể vấn đề không phải do ánh xạ học thuyết của bạn. Xem tài liệu tham khảo này cho NumberType.

Đó là những gì bạn sử dụng? Bạn có thể phải thay đổi độ chính xác.

+0

Bạn đã đúng - Tôi đã xuất bản chỉnh sửa. –

+0

Ồ, xin lỗi ...:/ –

+0

Bạn đã nhanh hơn 1 phút –

1

Trong Symfony3.2 bạn nên sử dụng quy mô:

$builder->add('lat', NumberType::class, array('scale' => 8)); 

này quy định có bao nhiêu số thập phân sẽ được phép cho tới khi trường vòng giá trị trình (thông qua rounding_mode). Ví dụ: nếu tỷ lệ được đặt thành 2, giá trị đã gửi là 20.123 sẽ được làm tròn thành, cho ví dụ, 20.12 (tùy thuộc vào rounding_mode của bạn).

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