Chúng tôi hiện đang sử dụng sau đây để tạo giá trị đồng đô la Mỹ trong ứng dụng web của chúng tôi:Làm thế nào để sử dụng NumberFormatInfo để loại bỏ ngoặc cho các giá trị tiêu cực
string.Format("{0:C0}", dollarValue);
Trong ví dụ này, nếu dollarValue là 145, sau đó chúng tôi sẽ xem: $ 145. Nếu đó là -145, thì chúng ta sẽ thấy ($ 145) thay vì - $ 145. Lưu ý rằng đối với chúng tôi, dollarValue là gấp đôi, nhưng nó có thể là bất kỳ loại số nào. Tôi nghĩ.
Dù sao, những gì tôi muốn là cho nó hoặc là $ 145 hoặc - $ 145.
Bây giờ, theo nghiên cứu của tôi, có thể thực hiện điều này bằng cách sử dụng lớp NumberFormatInfo. Tôi không thể tìm ra cách sử dụng nó và tôi không thể tìm thấy bất kỳ ví dụ hợp lệ nào. Tôi đã nhìn thấy câu hỏi này ở đây: C# creating a custom NumberFormatInfo to display "Free" when a currency value is $0.00 nhưng ví dụ từ MSDN liên kết đến từ câu hỏi này có vẻ hơi khác so với những gì tôi thực sự muốn làm.
Tôi nhận ra, tôi sẽ cần phải làm một cái gì đó trong các cách sau:
double dollarValue = -145d;
string myMoney = dollarValue.ToString("C0", someIFormatProvider);
nơi someIFormatProvider có khả năng loại NumberFormatInfo. Bây giờ, những gì tôi đã làm là:
NumberFormatInfo ni = new NumberformatInfo();
ni.CurrencyNegativePattern = 1; // The value 1 should mean not to use parenthesis
string myMoney = dollarValue.ToString("C0", ni);
... và tôi nhận được ngoại lệ "Ví dụ là chỉ đọc". Trong khi "tài liệu" cho thuộc tính CurrencyNegativePattern cho biết bạn có thể SET và GET giá trị, rõ ràng là bạn không thể. Ngoài ra, NumberFormatInfo là một lớp niêm phong. Tôi không thể dễ dàng tạo một lớp mới dựa trên nó và ghi đè lên giá trị.
Tôi đang thua lỗ về cách giải quyết vấn đề này. Ngay bây giờ, giải pháp thay thế của tôi là chỉ phủ nhận giá trị âm của tôi và có kết quả tích cực là tôi làm lại string.Format(...)
. Có, tôi nhận ra không có dấu hiệu tiêu cực trước điều này, nhưng, tất nhiên, điều đó dễ dàng được giải quyết bằng cách thêm "-" trước kết quả khi cần.
Ai đó có thể cung cấp cho tôi một ví dụ làm việc về cách sử dụng hiệu quả lớp NumbefFormatInfo chính xác trong tình huống này không? Cảm ơn.
Bạn có chắc chắn lỗi đến từ việc thiết lập CurrencyNegativePattern của một cá thể NumberFormatInfo? Tôi đã nhìn thấy ngoại lệ chỉ đọc này, nhưng nó được nâng lên từ cố gắng sửa đổi các thuộc tính CurrentUICulture? – Tisho
Mã hoạt động cho tôi (sau khi sửa trường hợp trên 'NumberformatInfo') –