2013-07-09 40 views
13

số cơ bản tôi đang định dạng như thế này

@String.Format("{0:C}", Model.Price) 

Kết quả là $ 2,320,000.00

kết quả tôi mong muốn, tuy nhiên, là 2,320,000.00 chỉ mà không có $, tương ứng. Làm thế nào tôi có thể đạt được điều này, trong khi vẫn tận dụng lợi thế của.

Sửa

và những gì nếu tôi muốn làm thay đổi lớp học của tôi để khi nào một người cố gắng để có được Price, anh nhận được loại này giá được định dạng. Đây là lớp học của tôi

public class Listing : DomainObject 
{ 
    public decimal Price { get; set; } 
    public decimal Commission { get; set; } 
} 
+0

Lý do đằng sau chỉnh sửa của tôi là trong trường hợp đầu tiên tôi phải thay đổi ở mọi nơi tôi sử dụng địa điểm và trong điều kiện thứ hai sẽ tự động được thực hiện ở mọi nơi. – Ancient

+0

Bạn có thể tạo phương thức đặc biệt làm thành viên của lớp học của bạn .. –

Trả lời

26

Sử dụng N thay vì C như format specifier của bạn:

@String.Format("{0:N}", Model.Price) 

"C" hoặc "c" Kết quả tệ: Một giá trị tiền tệ.

123,456 ("C", en-US) -> $ 123,46

"N" hoặc "n" Số kết quả: Integral và số thập phân chữ số, tách nhóm, và một số thập phân

1234,567 ("N ", en-US) -> 1,234.57

Tức là bạn đã nhận được một biểu tượng tiền tệ vì bạn là yêu cầu cho một biểu tượng.

+0

Cảm ơn, điều này hoạt động tốt, nhưng còn câu hỏi thứ hai của tôi thì sao? – Ancient

+0

@ user2413182 - không thực sự có ý nghĩa - nếu ai đó đang chỉ định định dạng một số thập phân trong một chuỗi làm đơn vị tiền tệ, ký hiệu tiền tệ sẽ được bao gồm. Bất cứ điều gì khác sẽ gây ngạc nhiên sâu sắc, điều đó không làm cho một trải nghiệm lập trình tốt. –

+0

Điều này thay đổi hành vi của âm, mặc dù chúng nằm trong ngoặc đơn với {0: C} và hiển thị dấu âm với {0: N}, vì vậy bạn giải quyết một vấn đề và có thể xuất hiện một vấn đề khác nếu bạn muốn âm bản xuất hiện dưới dạng tiền tệ không có ký hiệu tiền tệ. –

3

Bạn sẽ muốn đặt thuộc tính Giá thành chuỗi và có trường hậu tố của số thập phân, sau đó trong trình lấy giá của thuộc tính Giá làm định dạng chuỗi của bạn.

private decimal price; 

public String Price 
{ 
    get { return String.Format("{0:N}", price); } 
} 

Sau đó, bạn có thể sử dụng @Model.Price để hiển thị.

+0

Bạn có thể hiển thị ví dụ – Ancient

+0

được chỉnh sửa để hiển thị ví dụ;) – ChrisGheen

1

Thay vì sử dụng {0:F2} vì điều này sẽ không bao gồm Dấu phẩy ',' như trong {0: C}.

Console.Write("{0:F2}", 2.5); //2.50 
Console.Write("{0:F0}", 25); //25 
Các vấn đề liên quan