2011-11-28 38 views
41

Làm cách nào để định dạng giá trị thập phân thành chuỗi bằng một chữ số sau dấu phẩy/dấu chấm và khoảng trắng phía trước cho các giá trị nhỏ hơn 100?Định dạng giá trị thập phân thành chuỗi có khoảng trắng hàng đầu

Ví dụ: giá trị thập phân của 12.3456 phải được xuất dưới dạng " 12.3" với một khoảng trắng hàng đầu. 10.011 sẽ là " 10.0". 123.123"123.1"

Tôi đang tìm kiếm một giải pháp, làm việc với các định dạng chuỗi tiêu chuẩn/tùy chỉnh, ví dụ:

decimal value = 12.345456; 
Console.Write("{0:magic}", value); // 'magic' would be a fancy pattern. 

Trả lời

70

mẫu này {0,5:###.0} nên làm việc:

string.Format("{0,5:###.0}", 12.3456) //Output " 12.3" 
string.Format("{0,5:###.0}", 10.011) //Output " 10.0" 
string.Format("{0,5:###.0}", 123.123) //Output "123.1" 
string.Format("{0,5:###.0}", 1.123) //Output " 1.1" 
string.Format("{0,5:###.0}", 1234.123)//Output "1234.1" 
+0

Nó chắc chắn nhất! Cảm ơn! :) –

+3

Có một tài liệu tham khảo tốt cho điều này? tức là mỗi phần sẽ làm gì nếu trường hợp sử dụng của tôi hơi khác một chút. – tjrobinson

+4

@tjrobinson mọi thứ đều có trên MSDN: http://msdn.microsoft.com/en-us/library/0c899ak8.aspx và http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – nemesv

5
value.ToString("N1"); 

Thay đổi số cho chữ số thập phân hơn.

EDIT: Bỏ lỡ padding chút

value.ToString("N1").PadLeft(1); 
+0

Cảm ơn. Nhưng việc sử dụng PadLeft sẽ không hoạt động trong trường hợp của tôi, chuỗi với trình giữ chỗ {0: ...} sẽ chứa nhiều văn bản hơn chỉ là giá trị thập phân. –

+0

@Taz: Bạn phải viết 'PadLeft (5) '. Tham số là tổng chiều dài của chuỗi được đệm. – Jan

+0

@Jakob: Tại sao bạn không thể sử dụng 'string.Format()'? – Jan

1

Tất cả ở trên giải pháp sẽ làm tròn các số thập phân, chỉ trong trường hợp ai đó đang tìm kiếm giải pháp mà không làm tròn

decimal dValue = Math.Truncate(1.199999 * 100)/100; 
dValue .ToString("0.00");//output 1.99 
Các vấn đề liên quan