2013-07-09 64 views
13

基本上我格式化數字像這樣

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

結果$ 2,320,000.00

我想要的結果,但是,是2,320,000.00只是沒有$,分別。我怎樣才能做到這一點,同時仍然利用.NET的本地化處理?

編輯

,如果我想的是改變我類,這樣當過一個人試圖讓Price什麼,他得到這種格式化的價格。這裏是我的類

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

原因是,在我的第一個情況下,我不得不改變對每一個地方我用的地方,在第二個條件就會自動完成無處不在的地方。 – Ancient

+0

您可以創建特殊的方法作爲您班級的成員.. –

回答

26

使用N而不是C爲您format specifier

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

「C」 或 「c」 貨幣結果:貨幣值。

123.456( 「C」,連接-US) - > $ 123.46

「N」 或 「n」 數結果:積分和十進制數字組分隔符,和一個十進制

1234.567(「N 「,en-US) - > 1,234.57

iee你得到一個貨幣符號,因爲你是要求

+0

謝謝,這很好,但是我的第二個問題呢? – Ancient

+0

@ user2413182 - 沒有任何意義 - 如果有人指定將貨幣中的小數位數字格式化,則貨幣符號將包含在內。其他任何事情都會令人吃驚,這不會帶來好的編程體驗。 –

+0

雖然這改變了否定的行爲,但它們與{0:C}一起用括號括起來,並且用{0:N}表示負號,所以如果您希望將負數顯示爲貨幣,那麼您可以解決一個問題,並且可能會呈現另一個問題沒有貨幣符號。 –

3

你會想讓Price屬性成爲一個字符串,並且有一個小數的後臺字段,然後在你的Price屬性的getter中做你的字符串格式。

private decimal price; 

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

然後你可以使用 @Model.Price顯示。

+0

你能舉個例子 – Ancient

+0

editted來展示一個例子;) – ChrisGheen

1

寧可使用{0:F2},因爲這將不包含逗號',',就像在{0:C}中一樣。

我編輯的背後
Console.Write("{0:F2}", 2.5); //2.50 
Console.Write("{0:F0}", 25); //25