2009-04-20 45 views
6

Dường như String.Format sẽ không định dạng chuỗi làm đầu vào. Tôi đang làm điều gì đó sai, hoặc là hành vi này chỉ là bản địa?String.Format không định dạng chuỗi

Nhập: 0.37

Điều này không hiệu quả.

string x = String.Format("{0:P}", myString) 

Output: 0,37

này không.

string x = String.Format("{0:P}", Convert.ToDecimal(myString)) 

Output: 37.00%

Trả lời

9

Tôi tin rằng đây là hành vi cho 'định dạng tổng hợp'.

Ví dụ đầu tiên của bạn là cố gắng áp dụng các quy tắc định dạng số cho một chuỗi. Ví dụ thứ hai của bạn là cố gắng áp dụng các quy tắc định dạng số cho một số có thể có các vị trí thập phân.

Xem this article on MSDN để biết thêm thông tin.

2

Tùy chọn định dạng mà bạn đang cố gắng áp dụng chỉ hoạt động với số. Không có khái niệm về chuỗi thông minh trong .NET, trong đó CLR kiểm tra chuỗi cho một kiểu.

2

Tôi có làm điều gì sai, hay đây chỉ là hành vi tự nhiên?

Đó là hành vi gốc. Về cơ bản, nó không phải là công việc của Format để giải thích đầu vào chuỗi. Format giả định rằng người dùng cung cấp dữ liệu phù hợp - trong trường hợp của bạn, số dữ liệu. Chuỗi không phải là số, ngay cả khi nó đại diện cho một số (đây là sự khác biệt quan trọng nhất trong CS giữa giá trị/ngữ nghĩa và biểu diễn/cú pháp của nó!).

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