2012-03-20 36 views
7

Hiện đang sử dụng MySQL phiên bản 5.1.6Có một thời gian khó khăn quyết định float, double, hoặc thập phân

Đây là lần đầu tiên xây dựng thế giới thật của tôi và cho đến nay tôi đã thực sự được thưởng thức nó; Tuy nhiên, bây giờ tôi đang bị mắc kẹt trên một quyết định liên quan đến một datatype lĩnh vực và hy vọng ai đó có thể sắp xếp nó ra cho tôi.

Tôi về cơ bản có 10 trường là tất cả các kết quả kiểm tra khác nhau. Các con số nằm trong khoảng từ -100 đến 100 và có thể có một số thập phân với một điểm sau điểm thực tế.

Ví dụ: -5.1, 0, 1, 16.3, 99.2 và 100 là tất cả dữ liệu có thể có. Từ những gì tôi đã đọc, người ta nên sử dụng DECIMAL cho những thứ mà chúng ta thường đo và chính xác (chúng là), trong khi FLOAT và DOUBLE là xấp xỉ, mà tôi không thực sự muốn (mặc dù tôi chắc chắn ở cấp độ này, xấp xỉ là rất nhỏ nếu tồn tại ở tất cả).

Nếu tôi sử dụng DECIMAL, tôi có phải bao gồm dấu cách cho '-' ngay từ đầu nếu được sử dụng không? I.E, tôi có thể sử dụng DECIMAL (4,1) hoặc DECIMAL (5,1) hoặc tôi ở đây không? Tôi có thể đang suy nghĩ về điều này một chút.

+0

Vì vậy, câu hỏi của bạn thực sự là về cách bạn nên chọn đối số chiều cho 'DECIMAL'? Và tất cả những gì nói về 'FLOAT' và' DECIMAL' là dư thừa? Sau đó, chỉ cần đọc [tài liệu] (http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html)? –

Trả lời

4

Ký hiệu âm tính KHÔNG được tính là một chữ số trong phép tính của bạn, vì vậy DECIMAL (4,1) sẽ ổn.

Chỉnh sửa: Điều đó cũng có vẻ giống như trường phù hợp để sử dụng cho mục đích của bạn. Hãy thử nó!

+0

Cả hai câu trả lời của bạn đều giúp tôi, nhưng kể từ lần đầu tiên bạn chọn nó là tốt nhất. Cảm ơn! – shelzmike

6

DECIMAL(4,1) sẽ đủ, số hiệu chữ ký không không cần được bao gồm.

Thông tin thêm: http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html

Ví dụ, một cột DECIMAL(3,0) hỗ trợ một loạt các -999 đến 999

Decimal sẽ thực sự là lựa chọn tốt nhất cho nhu cầu của bạn. Float và Double có thể cung cấp cho bạn số lượng xấu (ví dụ: 0,2 không thể được biểu thị dưới dạng float, bạn sẽ nhận được 0.19999999)

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