Có cách nào để tôi có thể chỉ định một chuỗi định dạng số tiêu chuẩn hoặc tùy chỉnh để luôn xuất ra dấu hiệu, có thể là + ve hoặc -ve (mặc dù những gì nó nên làm cho số không, tôi không chắc chắn!)
Có cách nào để tôi có thể chỉ định một chuỗi định dạng số tiêu chuẩn hoặc tùy chỉnh để luôn xuất ra dấu hiệu, có thể là + ve hoặc -ve (mặc dù những gì nó nên làm cho số không, tôi không chắc chắn!)
Câu trả lời:
Vâng, bạn có thể. Có định dạng có điều kiện. Xem Định dạng có điều kiện trong MSDN
ví dụ:
string MyString = number.ToString("+0;-#");
Trong đó mỗi phần được phân tách bằng dấu chấm phẩy đại diện cho số dương và số âm
hoặc là:
string MyString = number.ToString("+#;-#;0");
nếu bạn không muốn số 0 có dấu cộng.
+#;-#
, với giá trị 0 tôi chỉ nhận được "+", không có 0. thực tế đối với tôi, tôi muốn 0 xuất hiện dưới dạng "+0", vì vậy điều này hoạt động : +#;-#;+0
.
''
sẽ làm những điều tuyệt vời! Nhìn này : Changes.ToString("'('#' ▲)';'('#' ▼)';''")
! Nó giúp tôi tiết kiệm rất nhiều thời gian và hàng trăm if
báo cáo! :)
+0;-#
thay vì +#;-#;+0
Câu trả lời này thực sự gây hiểu lầm cho tôi.
Bạn cũng có thể sử dụng các chuỗi định dạng trong chuỗi.Format (); chuỗi định dạng được phân tách khỏi chỉ mục bằng dấu hai chấm (':')
var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);
Đối với số {+1, -1, 0}, điều này mang lại:
1, Dấu hiệu lực lượng +1, Không có dấu hiệu nào cho +1 +1
, Dấu hiệu lực lượng -1, Không có dấu hiệu cho số 0 -1
, Dấu hiệu lực +0, Không có ký hiệu cho số 0
Bạn cũng có thể sử dụng một chuỗi nội suy thay vì string.Format
để có được kết quả tương tự:
var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
+#;-#
định dạng cho giá trị 0
+0;-#
. :)
+#;-#;+0
hơn +#;-#
vì điều này làm rõ hơn rằng 0 sẽ được định dạng là +0
Trái với các câu trả lời khác, dường như nếu bạn muốn nhận +1, -1, +0 (đối với các đối số 1, -1, 0), bạn cần sử dụng định dạng:
String.Format("{0:+#;-#;+0}", 0)); // output: +0
hoặc là
String.Format("{0:+0;-#}", 0)); // output: +0
Nếu bạn sử dụng chỉ +#;-#
nó sẽ hiển thị +
(không +0
) cho 0.
Trình xác định tùy chỉnh "#" (tại https://msdn.microsoft.com/en-us/l Library / 0c899ak8.aspx )
Lưu ý rằng công cụ xác định này không bao giờ hiển thị số 0 không phải là chữ số có nghĩa, ngay cả khi số 0 là chữ số duy nhất trong chuỗi. Nó sẽ chỉ hiển thị số 0 nếu nó là một chữ số có nghĩa trong số đang được hiển thị.
Ngoài ra, hãy nhớ rằng nếu bạn cần bất kỳ độ chính xác thập phân nào, bạn cần chỉ định nó như thế:
String.Format("{0:+0.##;-#.##}", 0)); // output: +0
hoặc, nếu bạn không phải lúc nào cũng xuất hiện, như thế:
String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00
Đối với một biểu thức số của bất kỳ loại nào:
+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0
Sử dụng ba phần cho ba trường hợp: tích cực, tiêu cực; không
Các khía cạnh khác của ví dụ:
Zero không được ký. Bạn có thể thấy nó hiển thị như mọi thứ, chẳng hạn như "không".
Các giá trị tuyệt đối nhỏ hơn một có 0 đứng trước dấu thập phân. Điều chỉnh theo khẩu vị.
Số chữ số dành cho các giá trị thập phân tuyệt đối lớn nhất và nhỏ nhất. Điều chỉnh theo khẩu vị.
Nhân vật điểm thập phân là đặc trưng văn hóa. Thay thế .NET.
Phân cách nhóm là tùy chọn. Các nhân vật là văn hóa cụ thể. Thay thế .NET. (Các vị trí cũng dành riêng cho văn hóa nhưng chỉ được điều khiển bởi chuỗi định dạng của bạn.) Bạn cũng sử dụng bất kỳ ký tự nào khác ngoại trừ các ký tự đặc biệt cho Định dạng (bao gồm ,. # 0).
Tôi không thể bình luận vì vậy tôi làm một câu trả lời ở đây (hệ thống danh tiếng hạt dẻ ....)
Bạn có thể sử dụng số.ToString ("+ 0; - #") rất tốt để Sản xuất Chuỗi thời gian UTC
Ở đây hiển thị trong mã PowerShell
"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"
Cảm ơn bạn @gcores https://stackoverflow.com/users/40256/gcores