Làm cách nào để diễn giải độ chính xác và tỷ lệ của một số trong cơ sở dữ liệu?


245

Tôi có cột sau được chỉ định trong cơ sở dữ liệu: thập phân (5,2)

Làm thế nào để một người giải thích điều này?

Theo các thuộc tính trên cột như được xem trong studio Quản lý máy chủ SQL, tôi có thể thấy rằng nó có nghĩa là: số thập phân (Độ chính xác số, thang số).

Độ chính xác và tỷ lệ có ý nghĩa gì trong thực tế?

Thật dễ dàng để giải thích điều này dưới dạng số thập phân có 5 chữ số và hai số thập phân ... tức là 12345.12

Tái bút Tôi đã có thể xác định câu trả lời chính xác từ một đồng nghiệp nhưng gặp khó khăn lớn khi tìm câu trả lời trực tuyến. Như vậy, tôi muốn có câu hỏi và câu trả lời được ghi lại ở đây trên stackoverflow để tham khảo trong tương lai.

Câu trả lời:


396

Độ chính xác số liên quan đến số chữ số tối đa có trong số.

tức là 1234567,89 có độ chính xác là 9

Tỷ lệ số dùng để chỉ số thập phân tối đa

tức là 123456.789 có thang điểm là 3

Do đó, giá trị tối đa được phép cho số thập phân (5,2) là 999,99


14
Đừng quên rằng nếu bạn đang sử dụng một hệ thống cho phép bạn xác định trước độ chính xác và tỷ lệ của đầu vào theo tỷ lệ phần trăm trong một cái gì đó như Microsoft Access, bạn phải xem xét tỷ lệ phần trăm dưới dạng toàn bộ số. Trong trường hợp này, 25,5% sẽ yêu cầu độ chính xác 4 và tỷ lệ 3 (không phải một) vì chúng ta phải coi nó là 0,55. Tôi đã gặp vấn đề này từ rất sớm và đã bối rối một lúc và tự hỏi tại sao thang 1 không hoạt động.
Tấm Ashton

1
@mezoid Giá trị thang âm có nghĩa là gì?
Geek

@Geek Theo technet.microsoft.com/en-us/l Library / ms187746.aspx Thang đo không thể nhỏ hơn 0. 0 <= tỷ lệ <= độ chính xác. Về cơ bản, một giá trị quy mô âm sẽ là vô nghĩa.
mezoid


1
Không phải là: "Độ chính xác của số có nghĩa là số chữ số tối đa có thể có trong số đó."? Số chính xác 123,5 cũng có thể có độ chính xác 10, nhưng không có thêm chữ số nào để thêm. Hay điều này sẽ trở thành 123.5000000?
Chris311

86

Độ chính xác của một số là số chữ số.

Tỷ lệ của một số là số chữ số sau dấu thập phân.

Điều thường được ngụ ý khi thiết lập độ chính xác và tỷ lệ trên định nghĩa trường là chúng đại diện cho các giá trị tối đa .

Ví dụ, trường thập phân được xác định bằng precision=5scale=2sẽ cho phép các giá trị sau:

  • 123.45 (p = 5, s = 2)
  • 12.34 (p = 4, s = 2)
  • 12345 (p = 5, s = 0)
  • 123.4 (p = 4, s = 1)
  • 0 (p = 0, s = 0)

Các giá trị sau không được phép hoặc sẽ gây mất dữ liệu:

  • 12.345(p = 5, s = 3) => có thể bị cắt cụt thành 12.35(p = 4, s = 2)
  • 1234.56(p = 6, s = 2) => có thể bị cắt cụt thành 1234.6(p = 5, s = 1)
  • 123.456(p = 6, s = 3) => có thể bị cắt cụt thành 123.46(p = 5, s = 2)
  • 123450 (p = 6, s = 0) => ngoài phạm vi

Lưu ý rằng phạm vi thường được xác định bởi độ chính xác: |value| < 10^p...


5
Lưu ý rằng MS SQL Server sẽ không cho phép 12345 hoặc 1234.56 vì "[scale] được trừ từ [chính xác] để xác định số chữ số tối đa ở bên trái dấu thập phân." (nguồn: số thập phân và số )
molnarm

Thế còn 12345000? Chính xác 5 hay 8? Nếu 5, với quy mô gì? Thang đo -3?
Towi

@towi điều đó có nghĩa là gì? Nếu bạn muốn lưu trữ cái đó, bạn sẽ sử dụng 8,0.
Rob Grant

Câu trả lời hay, nhưng tại sao lại nằm 123450 (p=6,s=0)ngoài phạm vi? 123450 có 6 chữ số và không có chữ số sau một điểm?
Matthias Burger

1
@MatthiasBurger 123450 (p=6,s=0)sẽ nằm ngoài phạm vi cho trường thập phân với 5 độ chính xác (như đã đề cập trong ví dụ). Bởi vì độ chính xác của một số bạn muốn lưu trữ trong một trường phải nhỏ hơn hoặc bằng độ chính xác của trường.
Snoheadsbert

26

Độ chính xác, tỷ lệ và độ dài trong tài liệu SQL Server 2000 ghi:

Độ chính xác là số chữ số trong một số. Tỷ lệ là số chữ số ở bên phải dấu thập phân trong một số. Ví dụ, số 123,45 có độ chính xác là 5 và thang điểm là 2.


Cảm ơn bạn. Tôi mới nhận ra rằng một đoạn mã Delphi / Pascal đang sử dụng thang điểm 0 để cắt phần thập phân của float
peterchaula
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.