Tại sao 0.ToString (“#. ##”) trả về chuỗi trống thay vì 0,00 hoặc ít nhất là 0?


Câu trả lời:


185

#ở định dạng chuỗi chỉ ra rằng giá trị là tùy chọn. Nếu bạn muốn có được đầu ra, 0.00bạn cần những thứ sau:

0.ToString("0.00");

Xem tại đây để biết các định dạng số tùy chỉnh có thể được chuyển cho phương pháp này.


3
Tôi vẫn còn bối rối một điều rằng tại sao kết quả không phải là 0. Bởi vì 0 không phải là tùy chọn. Trống rỗng có ý nghĩa không?
user960567

135

Bởi vì trong một chuỗi định dạng, #được sử dụng để biểu thị một trình giữ chỗ ký tự tùy chọn; nó chỉ được sử dụng nếu cần để đại diện cho số.

Nếu bạn làm điều này thay thế: 0.ToString("0.##");bạn nhận được:0

Thật thú vị, nếu bạn làm điều này: 0.ToString("#.0#");bạn nhận được:.0

Nếu bạn muốn có cả ba chữ số: 0.ToString("0.00");sản xuất:0.00


Từ các nhận xét cho đến câu trả lời này, lập luận của bạn dường như là,

nó sẽ hiển thị '0', bởi vì tại sao mọi người lại muốn xem một chuỗi rỗng nếu giá trị số là 0?

Câu trả lời rất đơn giản: Bạn có quyền lựa chọn cách bạn muốn nó được hiển thị. Đó là những gì các chuỗi định dạng tùy chỉnh dành cho. Đơn giản là bạn đã chọn chuỗi định dạng không chính xác cho nhu cầu của mình .


20

Theo tài liệu về Trình giữ chỗ chữ số .

Nếu giá trị đang được định dạng có một chữ số ở vị trí mà dấu '#' xuất hiện trong chuỗi định dạng, thì chữ số đó được sao chép vào chuỗi kết quả. Nếu không, không có gì được lưu trữ ở vị trí đó trong chuỗi kết quả. Bộ chỉ định này không bao giờ hiển thị ký tự '0' nếu nó không phải là một chữ số có nghĩa, ngay cả khi '0' là chữ số duy nhất trong chuỗi. Nó sẽ hiển thị ký tự '0' nếu nó là một chữ số có nghĩa trong số đang được hiển thị. Chuỗi định dạng "##" làm cho giá trị được làm tròn đến chữ số gần nhất đứng trước số thập phân, trong đó việc làm tròn từ 0 luôn được sử dụng. Ví dụ: định dạng 34,5 với "##" sẽ dẫn đến giá trị 35.

Nếu bạn muốn số 0 hiển thị, hãy sử dụng Zero PlaceHolder

f giá trị được định dạng có một chữ số ở vị trí mà '0' xuất hiện trong chuỗi định dạng, thì chữ số đó được sao chép vào chuỗi kết quả. Vị trí của '0' ngoài cùng bên trái trước dấu thập phân và '0' ngoài cùng bên phải sau dấu thập phân xác định phạm vi chữ số luôn xuất hiện trong chuỗi kết quả.
Mã định nghĩa "00" làm cho giá trị được làm tròn đến chữ số gần nhất đứng trước số thập phân, trong đó việc làm tròn từ 0 luôn được sử dụng. Ví dụ: định dạng 34,5 với "00" sẽ dẫn đến giá trị 35.



-1

Sử dụng nó như thế này:

0.ToString("#0.##")

0after #sẽ đảm bảo đặt giá trị đầu ra là 0 nếu giá trị là 0 nếu không nó sẽ hiển thị giá trị. Vì vậy 0.0.ToString("#0.##")=0.0010.ToString("#.##")=10.00

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.