Việc thêm một giá trị rất nhỏ (độ lớn) vào một độ lớn (độ lớn) làm cho: hầu như không có sự khác biệt. Trong trường hợp này, sự khác biệt quá nhỏ đến mức nó không thể được đại diện trong độ chính xác của double
. Về cơ bản:
double.MinValue + (most things) === double.MinValue
Nó không đảm bảo để có thể đại diện cho tất cả các đơn double
giữa double.MinValue
và double.MaxValue
, và khi bạn tăng độ lớn, độ phân giải tuyệt đối về những gì có thể được biểu giảm.
Đừng quên: double.MinValue
có 308 chữ số trước vị trí thập phân. Bạn đang thay đổi rất ít trong số họ. Bạn về cơ bản thực hiện:
-179769313486232000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000 // yikes!
+ 999999999999999999
Hãy ghi nhớ rằng double
có khoảng 17 chữ số chính xác; khoảng 291 chữ số của con số khổng lồ đó có thể bị bỏ qua phần lớn.
Nguồn
2014-09-24 08:54:32
Bây giờ tôi đã tìm thấy http://msdn.microsoft.com/de-de/library/system.double.epsilon%28v=vs.110%29.aspx: "Tuy nhiên, thuộc tính Epsilon không phải là thước đo chung của độ chính xác của loại Double; nó chỉ áp dụng cho các cá thể Đôi có giá trị bằng 0 hoặc số mũ là -1022. " – habakuk