2011-03-14 29 views
11

Tôi muốn định dạng một số nguyên i (-100 < i < 100), như vậy:Làm thế nào để buộc một dấu hiệu khi định dạng một Int trong C#

-99 định dạng như "-99"
9 định dạng như "09"
-1 định dạng như "-01"
0 dạng như "00"

i.ToString("00") 

gần nhưng không thêm vào dấu + khi int là tích cực.

Có cách nào để thực hiện điều này mà không phân biệt rõ ràng giữa i >= 0i < 0?

+0

thấy http://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign – Equiso

+1

trùng lặp có thể xảy ra của [chuỗi định dạng tuỳ chỉnh số để luôn hiển thị dấu hiệu] (https://stackoverflow.com/questions/348201/custom-numeric-format-string-to-always-display-the-sign) –

Trả lời

28

Hãy thử điều này:

i.ToString("+00;-00;+00"); 

Khi phân cách bằng dấu chấm phẩy (;) phần đầu tiên sẽ áp dụng cho các giá trị tích cực và zero (0), phần thứ hai sẽ áp dụng cho các giá trị âm, phần thứ ba sẽ áp dụng cho số không (0).

Lưu ý rằng phần thứ ba có thể được bỏ qua nếu bạn muốn không được định dạng giống như cách số dương. Phần thứ hai cũng có thể được bỏ qua nếu bạn muốn các định dạng âm được định dạng giống như dương, nhưng muốn có một định dạng khác cho 0.

tham khảo: MSDN Custom Numeric Format Strings: The ";" Section Separator

+1

OP muốn '0' hiển thị là" trò chơi ", không phải là" 00 ". – LukeH

+0

@LukeH Cảm ơn, đã sửa! – squillman

+0

Có vẻ như 'i.ToString (" + 00; -00 ");' là đủ. 0 được coi là tích cực ở đây. – Rodolphe

3

Hãy thử một cái gì đó như thế này:

i.ToString("+00;-00"); 

Một số ví dụ:

Console.WriteLine((-99).ToString("+00;-00")); // -99 
Console.WriteLine(9.ToString("+00;-00"));  // +09 
Console.WriteLine((-1).ToString("+00;-00"));  // -01 
Console.WriteLine((0).ToString("+00;-00"));  // +00 
4

Bạn có thể có thể làm điều đó với một chuỗi định dạng như vậy ..

i.ToString("+00;-00"); 

sẽ này sản xuất đầu ra sau ..

2.ToString("+00;-00"); // +02 
(-2).ToString("+00;-00"); // -02 
0.ToString("+00;-00"); // +00 

Hãy nhìn vào các MSDN documentation for Custom Numeric Format Strings

+0

OP muốn '0' hiển thị là" biển " , không phải là đồng bằng "00". – LukeH

+0

@ LukeH Bạn đúng, sai lầm của tôi, câu trả lời sửa đổi để phản ánh điều này. –

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