2008-12-07 23 views

Trả lời

232

Có, bạn có thể. Có định dạng có điều kiện. Xem Conditional formatting in MSDN

ví dụ:

string MyString = number.ToString("+0;-#"); 

đâu mỗi phần cách nhau bởi dấu chấm phẩy đại diện cho các số dương và âm

hay:

string MyString = number.ToString("+#;-#;0"); 

nếu bạn không muốn không có dấu cộng.

+1

Đã sửa lỗi trong đó các từ khóa phủ định không bị trừ. –

+0

Cảm ơn bạn rất nhiều! Tôi đã phá vỡ đầu của tôi cho một giờ để tìm ra những gì tương đương với '+' - lá cờ của printf trong C# và bạn đã cho tôi câu trả lời. – rbaleksandar

+4

với '+ #; - #', với giá trị 0 tôi chỉ nhận được "+", không có giá trị 0 thực tế đối với tôi, tôi muốn 0 xuất hiện là "+0", vì vậy công việc này: '+ #; - #; + 0'. –

50

Hãy coi chừng, khi sử dụng định dạng có điều kiện, giá trị âm sẽ không tự động nhận được dấu. Bạn cần phải làm

string MyString = number.ToString("+#;-#;0"); 
+0

Khi những người khác chỉ ra, '+0; - #' cho bạn kết quả tương tự với mã sạch hơn. – Andrew

21

Bạn cũng có thể sử dụng chuỗi định dạng trong chuỗi.Format(); chuỗi định dạng được tách ra khỏi chỉ mục với dấu hai chấm (':')

string MyString = string.Format("Default format {0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}.", number); 

Đối number = {1, -1, 0}, điều này mang lại -
định dạng mặc định 1, Force dấu +1, Không ký cho số không +1.
Định dạng mặc định -1, Buộc ký -1, Không có dấu cho 0.
Định dạng mặc định 0, Buộc ký hiệu +0, Không có biển báo bằng 0.

+0

Dòng cuối cùng của câu trả lời của bạn nên nói "Định dạng mặc định 0, Dấu hiệu +, Không có dấu 0." bởi vì đó là kết quả thực sự của định dạng '' '+ #; - #' '' cho giá trị 0 –

+0

Cảm ơn bạn, Kamil - tôi đã bỏ lỡ điều đó. Bây giờ tôi đã sửa định dạng ký hiệu lực: + #; - #; + 0 (thay vì + #; - #) – Edward

+1

Bạn có thể nhận được hành vi ký hiệu lực với định dạng đơn giản hơn: '+0; - #'. :) – Andrew

5

Ngược lại với các câu trả lời khác có vẻ như nếu bạn muốn +1, -1, +0 (đối số 1, -1, 0), bạn cần phải sử dụng các định dạng:

String.Format("{0:+#;-#;+0}", 0)); // output: +0 

hoặc

String.Format("{0:+0;-#}", 0)); // output: +0 

Nếu bạn sử dụng chỉ +#;-# nó sẽ hiển thị chỉ + (không +0) cho 0.

Các "#" Custom Specifier (tại https://msdn.microsoft.com/en-us/library/0c899ak8.aspx)

Lưu ý rằng specifier này không bao giờ hiển thị một số không đó không phải là một con số đáng kể, thậm chí nếu không là chữ số duy nhất trong chuỗi. Nó sẽ hiển thị bằng không nếu nó là một chữ số quan trọng trong số đang được hiển thị.

Cũng hãy nhớ rằng nếu bạn cần bất kỳ chính xác thập phân bạn cần phải xác định nó như thế:

String.Format("{0:+0.##;-#.##}", 0)); // output: +0 

hoặc, nếu bạn wan't zeros để luôn luôn xuất hiện, như vậy:

String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00 
Các vấn đề liên quan