2013-10-12 51 views
1

我有存儲DB十進制值「12.3456」我希望它展示給客戶端爲「12.34」asp.net C#小數格式化錢

我使用下面的代碼。

<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}")%> 

我想要的格式是這樣

12.3456 --> 12.34 

但它給我這個吧。

12.3456 --> 12.3500 

我不確定我是否錯過了某些東西或做錯了什麼。

謝謝您的幫助。

UPDATE

我最終的asp:Label代替<%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}")%>

Label Price.Text = Math.Truncate(12.3456* 100)/100).ToString(); 

這給了我

12.34 

做什麼,但如果數量爲12.1000它給我

12.1 

我需要它在12.10格式

謝謝。

解決

Label price.Text = String.Format("{0:#.00}", 12.1000) --> 12,10 
+0

我需要這個問題的反轉,在模型中它是公開的十進制數量{get; set;}但是當我輸入值(29.0987)我得到30或0.1234我得到0.12但我需要有確切的值這是可能的 – SAR

回答

1

使用的#.00格式字符串始終顯示爲2位小數。

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

+0

這是也給我12.3500我需要12.34 – user2873685

+0

你確定,因爲'Console.WriteLine(「{0:#。00}」,12.3456);'顯示爲'12.35'。正在努力下降,即12.34而不是12.35? –

+0

<%#DataBinder.Eval(Container.DataItem,「Price」,「{0:#。00}」)%>這是我在中繼器中的權利,我有12.3456分貝。它在頁面上給我12.3500。 – user2873685

0

你可以嘗試這樣的: -

<%# DataBinder.Eval(Container.DataItem, "Price", "{#.00}")%> 

編輯: -

我認爲你需要的值,而無需舍入。您可以嘗試這樣的: -

var f = 12.3456; 
f = Math.Truncate(f * 100)/100; 
+0

這會''.3456'到'.35'這個輪子 – Anirudha

+0

這給我12.3500我需要12.34 – user2873685

+0

@ user2873685: - 更新了我的答案。看看是否有幫助? –

0

您可以使用

Math.Floor(12.3456*100)/100 ; 
0

的ToString(C) 'C' 是貨幣。