2013-10-12 37 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' 是货币。