2009-10-05 22 views
12

Tôi đang cố gắng hiểu cách làm tròn vị trí thứ mười gần nhất với C#. Ví dụ, tôi có một giá trị là loại gấp đôi. Hiện tại, giá trị này đã được đặt thành 10.75. Tuy nhiên, tôi cần phải làm tròn và sau đó cắt tất cả mọi thứ qua vị trí thứ mười. Trong trường hợp này, tôi đang tìm kiếm một giá trị 10,8. Làm thế nào để tôi làm tròn đến vị trí thứ mười trong C#?C# - Math.Round

Cảm ơn bạn!

+2

Vì bạn biết rõ về math.round, có vẻ như nó bằng cách nào đó không hoạt động cho bạn. Bạn có thể cho thấy những gì bạn đã thử và giải thích nó khác với những gì bạn mong đợi không? –

Trả lời

28
Math.Round(yourNumber, 1) 

Tham số thứ hai là số chữ số thập phân để làm tròn. Trong trường hợp của bạn, bạn muốn 1 chữ số thập phân làm kết quả cuối cùng.

13

Bạn chỉ cần sử dụng overload of Math.Round có tham số decimals.

Math.Round(10.75, 1) // returns 10.8 

Chỉ cần để so sánh:

Math.Round(10.75) // returns 11 
Math.Round(10.75, 0) // returns 11 
Math.Round(10.75, 2) // returns 10.75 
4

Bạn có thực sự cần để làm tròn nó, hoặc có thể bạn chỉ cần định dạng nó cho in ấn nhưng cho phép biến bản thân để giữ độ chính xác của nó? Một cái gì đó như:

decimal value = 10.75; 
value.ToString ("#.#"); 
5

Vì bạn sử dụng Math.Round() trong tiêu đề của bạn, tôi sẽ giả sử bạn đã thử các cách tiếp cận cơ bản Math.Round(10.75,1) và nó sẽ trả về một cái gì đó bạn không mong đợi. Với ý nghĩ đó, tôi đề nghị xem xét một số các quá tải khác nhau cho các chức năng, đặc biệt là một chấp nhận một enum MidPointRounding:

http://msdn.microsoft.com/en-us/library/f5898377.aspx

2

Nếu bạn chỉ muốn "cắt" tất cả mọi thứ sau khi thập phân đầu tiên, điều này shoudl work:

return Math.Round(value * 10)/10 
Các vấn đề liên quan