2011-06-23 25 views
12

trong .NET, khi tôi thêm hai SqlDecimals, như vậy:Thêm hai .NET SqlDecimals tăng độ chính xác?

SqlDecimal s1 = new SqlDecimal(1); 
SqlDecimal s2 = new SqlDecimal(1); 
SqlDecimal s3 = s1 + s2; 

sau đó s3 có độ chính xác 2, trong khi cả hai s1 và s2 có độ chính xác 1.

Điều này có vẻ kỳ lạ, đặc biệt là các tiểu bang tài liệu giá trị trả về của toán tử cộng thêm là "Một cấu trúc SqlDecimal mới có thuộc tính Value chứa tổng." I E. theo tài liệu, bổ sung không nên thay đổi độ chính xác.

Tôi có thiếu gì đó ở đây không? Hành vi này có dự định không?

Chúc mừng,

Tilman

+0

Thường là thời gian ví dụ trong trường hợp thêm hai giá trị phao, kết quả sẽ là số tăng gấp đôi để tính đến tình trạng tràn. Vì vậy, những gì có vẻ kỳ lạ là không thực sự kỳ lạ, nó làm cho rất nhiều ý nghĩa, cho bối cảnh đúng. –

+0

Cảm ơn, sau khi đọc lại định nghĩa về 'độ chính xác', nó thực sự có ý nghĩa hơn ... Sau đó, một lần nữa, thao tác bổ sung không tính đến giá trị thực tế và chỉ điều chỉnh độ chính xác nếu cần? – user812775

Trả lời

4

This article (http://msdn.microsoft.com/en-us/library/ms190476.aspx) giải thích hành vi cho các loại SQL, và tôi đảm nhận. Các kiểu dữ liệu NET Sql phản ánh điều đó trong hành vi của chúng.

+0

Cảm ơn, điều đó thực sự có ý nghĩa :) – user812775

3

Tôi thấy hành vi này bình thường.

Precision được định nghĩa là số lượng tối đa các chữ số dùng để đại diện choValuetài sản.

Tổng của hai số SqlDecimal số là Precision bằng 1 là một số có trong [-10,10]. Trong trường hợp này, yêu cầu tối đa Precision2.

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