2012-04-24 52 views
13

Tôi đang làm việc trên một ứng dụng web asp.net mvc 3 sử dụng phương pháp tiếp cận cơ sở dữ liệu đầu tiên.Entity Framework ánh xạ kiểu dữ liệu float thành double

Tôi có một bảng gọi là Results có chứa hai cột (min & max) kiểu float, nhưng khi tôi sử dụng khung Entity để lập bản đồ cơ sở dữ liệu hiện có vào các lớp mô hình, sau đó EF tạo ra một lớp Results với kiểu dữ liệu của min & max các trường là double thay vì float như được chỉ định trong cơ sở dữ liệu exsiting.

Vậy tại sao hành vi này lại xảy ra? Nó có gây ra vấn đề gì không?

Trả lời

16

Đây là hành vi bình thường, theo MSDN.

Ngay cả kiểu dữ liệu real của máy chủ SQL được ánh xạ tới double, mặc dù float chắc chắn sẽ đủ ở đó.

Nhưng tên loại rất khó hiểu ở đây. Trên thực tế, float (t-SQL) giống với double (.Net): độ chính xác 15 chữ số và phạm vi âm 1.79769313486232e308 thành tích cực 1.79769313486232e308.

1

Tôi không chắc chắn nếu vấn đề của bạn là giống này hay không:

http://forums.asp.net/p/1606916/4100117.aspx

Nhưng nó không có vẻ như thế này nên gây ra bất kỳ vấn đề. Bạn có thể mất độ chính xác với số của bạn đi từ một đôi sang phao, nhưng nó vẫn hoạt động trừ khi bạn cần thêm các chữ số.

+0

nhưng tại sao tôi sẽ mất chữ số nếu tôi thay đổi gấp đôi thành fload, tôi đã cố gắng chèn một thứ gì đó như 1.123456789 và nó được lưu trong cơ sở dữ liệu ... –

+0

Bạn có thể mất chính xác vì phao có độ chính xác là 7 , trong khi một đôi có độ chính xác 15-16. Có thể bạn sẽ không cần loại chính xác đó trừ khi bạn đang thực hiện một số tính toán toán học khi cần thiết. http://msdn.microsoft.com/en-us/library/b1e65aza(v=vs.100).aspx http://msdn.microsoft.com/en-us/library/678hzkk9(v=vs .100) .aspx 2 liên kết này dành cho các loại dữ liệu float và double. –

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