2011-11-23 43 views
23

Tôi có giá trị double như 12.256852651 và tôi muốn hiển thị số đó là 12.257 làm số phao mà không chuyển đổi nó thành loại chuỗi.Làm tròn giá trị phao

Tôi có thể làm điều đó như thế nào trong C#?

+2

Math.Round (giá trị, 3) http://msdn.microsoft.com/en-us/library/75ks3aby.aspx – FailedDev

+3

Bạn có ý nghĩa gì bởi "và không phải là định dạng chuỗi"? Bạn đang định dạng số dưới dạng chuỗi để hiển thị số, phải không? –

+0

Có lẽ nó đi qua dây như một số (json, nói). Nó có thể cần phải được lưu trữ như là một phía khách hàng số ngoài việc được chuyển đổi thành một chuỗi để hiển thị trong một giao diện người dùng. Chỉ cần đoán dựa trên các trường hợp sử dụng tương tự ở đây. –

Trả lời

41

Lần đầu tiên tôi chuyển đổi thành Decimal và sau đó sử dụng Math.Round trên kết quả. Chuyển đổi này là không cần thiết, nhưng tôi luôn luôn cảm thấy một chút khó chịu nếu tôi vòng đến số thập phân trong khi sử dụng các điểm nổi nhị phân.

Math.Round((Decimal)f, 3, MidpointRounding.AwayFromZero) 

Bạn cũng nên xem xét lựa chọn MidpointRounding, vì theo mặc định này sử dụng vòng Banker, mà không phải là điều bạn đang sử dụng để đi học.

+0

Hãy nhớ rằng, khi làm tròn một kiểu dấu phẩy động (ngược với 'System.Decimal') thành một số số thập phân lớn hơn' 0', thì thông thường "điểm giữa" không thể biểu diễn chính xác. Ví dụ: "trung điểm" '12,2565' (trung bình của hàng xóm' 12.256' và '12.257') không chính xác được thể hiện như là một' double' kể từ khi mở rộng nhị phân của nó là vô hạn (định kỳ) (thường là trường hợp). Vì vậy, có một lý do chính đáng để cố gắng chuyển đổi sang 'thập phân' trước khi làm tròn nếu người ta muốn" điểm giữa "thực sự được nhấn. Với 'double' thường có một" lỗ hổng "nơi mà điểm giữa nên có. –

8

Nếu bạn muốn hiển thị nó, nó sẽ là một chuỗi và đó là những gì bạn cần sử dụng.

Nếu bạn muốn vòng để sử dụng sau này trong tính toán, hãy sử dụng Math.Round((decimal)myDouble, 3).

Nếu bạn không định sử dụng nó trong tính toán nhưng cần phải hiển thị, hãy sử dụng double.ToString("F3").

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