2014-09-08 24 views
5

Tôi muốn định dạng bất kỳ số lượng (số nguyên hoặc thực) thành một chuỗi mà luônmột dấu hiệu (tích cực hay tiêu cực) và một phân cách thập phân, nhưng không có số 0.Format một số luôn luôn có một dấu hiệu và dấu phân cách thập phân

Một số mẫu:

3.14 => +3.14 
12.00 => +12. 
-78.4 => -78.4 
-3.00 => -3. 

Có thể với một trong những ToString() triển khai mặc định, hay tôi cần viết này bản thân mình?

+1

Không tồn tại cách nào đã được triển khai để hiển thị dấu phân cách thập phân theo sau là n othing (AFAIK). Vì vậy, bạn phải thực hiện điều này trên chính mình. – Oliver

Trả lời

7

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

double x = -12.43; 
string xStr = x.ToString("+0.#####;-0.#####"); 

Nhưng điều này sẽ không giúp đỡ để hiển thị trailing dấu thập phân. Bạn có thể xử lý tình huống như vậy sử dụng phương pháp này:

public static string MyToString(double x) 
{ 
    return x == Math.Floor(x) 
     ? x.ToString("+0;-0;0") + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator 
     : x.ToString("+0.####;-0.####"); 
} 
+0

Có lẽ là câu trả lời hay nhất. Nhưng, tôi cảm thấy rằng chúng ta không thể ép buộc dấu thập phân nếu chúng không có dấu 0. –

+0

Ok, bây giờ nó hoạt động chính xác như tôi muốn! Cảm ơn! –

+1

Giả sử đây là phương thức mở rộng, từ khóa 'this' này bị thiếu. tức là 'chuỗi tĩnh công khai MyToString (điều này đôi x)' –

0

Bạn có thể thử như thế này:

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

Điều này không hiển thị chữ số sau dấu tách thập phân. – Dmitry

0

Chuỗi định dạng mà bạn muốn sử dụng là

ToString("N", CultureInfo.InvariantCulture) // Displays -12,445.68 

Xem here cho các tùy chọn bổ sung cho các chuỗi định dạng

+0

Điều này không hiển thị điểm thập phân kết thúc nếu không có dấu 0. – Nzall

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