Trong C# Có sự khác biệt nào về độ chính xác của hai chiến lược làm tròn thập phân MidpointRounding.ToEven
và MidpointRounding.AwayFromZero
? Tôi có nghĩa là cả hai đều đảm bảo phân phối đồng đều giữa các con số được làm tròn đến, hay là một chiến lược làm tròn để biểu diễn các con số được làm tròn so với cái kia?C# Làm tròn MidpointRounding.ToEven vs MidpointRounding.AwayFromZero
Trả lời
Từ MSDN:
Theo mặc định, Math.Round sử dụng MidpointRounding.ToEven. Hầu hết mọi người không quen thuộc với "làm tròn để thậm chí" như là thay thế, "làm tròn đi từ số không" thường được dạy ở trường. .NET mặc định là "Làm tròn đến thậm chí" vì nó có tính thống kê cao hơn bởi vì nó không chia sẻ xu hướng "làm tròn đi từ số không" để làm tròn một chút thường xuyên hơn nó tròn xuống (giả sử các số được làm tròn có xu hướng dương.)
Tùy thuộc vào tập dữ liệu, phép tính số học đối xứng có thể giới thiệu một xu hướng lớn, vì nó luôn làm tròn giá trị trung điểm trở lên. Để lấy một ví dụ đơn giản, giả sử rằng chúng tôi muốn xác định giá trị trung bình của ba giá trị, 1,5, 2,5 và 3,5, nhưng chúng tôi muốn đầu tiên làm tròn chúng thành số nguyên gần nhất trước khi tính giá trị trung bình của chúng. Lưu ý rằng giá trị trung bình thực của các giá trị này là 2.5. Sử dụng số học số học làm tròn, các giá trị này thay đổi thành 2, 3 và 4, và giá trị trung bình của chúng là 3. Sử dụng các ngân hàng làm tròn, các giá trị này thay đổi thành 2, 2 và 4, và giá trị trung bình của chúng là 2,67. Bởi vì phương thức làm tròn thứ hai gần với giá trị trung bình thực của ba giá trị, nó cung cấp sự mất mát dữ liệu ít nhất.
http://msdn.microsoft.com/en-us/library/system.math.round.aspx
- 1. Làm tròn số ngay cả trong C#
- 2. Có cách nào để làm 'chính xác' làm tròn số học trong .NET không?/C#
- 3. Tại sao 0.5 được làm tròn với kết quả MidpointRounding.AwayFromZero bằng 0?
- 4. Excel Roundup vs NET Math.round
- 5. Javascript VS PHP làm tròn
- 6. đúp vs thập phân làm tròn trong C#
- 7. Cắt ngắn Hai chữ số thập phân mà không làm tròn
- 8. C++ làm tròn số đi từ zero
- 9. Làm tròn số trong Mục tiêu-C
- 10. Tại sao .NET decimal.ToString (chuỗi) làm tròn từ số 0, dường như không nhất quán với thông số ngôn ngữ?
- 11. Tại sao System.MidpointRounding.AwayFromZero không làm tròn trong trường hợp này?
- 12. Thuật toán Giải đấu Vòng tròn Robin tại C#
- 13. Cạnh tròn trong picturebox C#
- 14. Cần giúp đỡ làm tròn đến 2 chữ số thập phân
- 15. Jinja2 lọc tròn không làm tròn
- 16. Cắt bớt đôi mà không làm tròn trong C
- 17. Chia int và làm tròn lên trong Mục tiêu-C
- 18. Làm tròn xuống 2 chữ số thập phân trong C#
- 19. Làm tròn số phao trong mục tiêu-c
- 20. Vấn đề làm tròn VBA
- 21. Làm tròn số NSDecimalNumber
- 22. CppCMS vs C++ Server Pages vs Wt
- 23. Cách làm tròn một số
- 24. Làm tròn giá trị phao
- 25. Giá trị thập phân tròn trong C#
- 26. khách quan c - UINavigationBar với góc tròn
- 27. static vs extern "C"/"C++"
- 28. Chuyển đổi mã vòng tròn HSV từ Delphi thành C#
- 29. Int32 vs Int64 vs Int trong C#
- 30. parseFloat làm tròn
Câu trả lời được chấp nhận cho câu hỏi này: http://stackoverflow.com/questions/311696/why-does-net-use-bankers-rounding-as-default nên rõ ràng mọi thứ lên :) – MattDavey
tôi nghĩ rằng ví dụ dưới đây giải thích nó tốt hơn. :) –
vâng, nó có :) - câu hỏi được liên kết có rất nhiều thông tin cơ bản .. – MattDavey