2009-10-19 83 views
14

我有一个十进制数,例如1234.500。将逗号分隔符(.net)加上十进制(.net)

我想它显示1,234.4

即时通讯目前将其转换为双删除尾随0。

string.Format(“{0:0,0}”,1234.500)删除小数点,其他格式化选项无论如何都使用两个小数位。

任何人都可以提供见解?

+0

编辑,只是为了澄清1234.560,我希望1,234.56 – maxp 2009-10-19 09:44:01

+0

你想显示为1,234 *。 * 5 **对吗?编辑帖子以反映这一点。 – Amarghosh 2009-10-19 09:48:17

+0

你想使用本地系统设置,或者只是强制应用程序以这种方式格式化? – 2009-10-19 09:50:08

回答

18

您应该使用自定义格式像#,##0.00

string s = string.Format("{0:#,##0.00}", xx); 

会产生1,234.50当XX = 1234.5M
忘记转换为double,不会真正的帮助。

+0

不要任何结尾的零 – maxp 2009-10-19 09:55:35

+1

然后删除一个或多个零:#,## 0。或者让它们可选:#,## 0# – 2009-10-19 09:58:34

+0

感谢您的帮助。 – maxp 2009-10-19 10:01:37

0

你试过吗?

String.Format("{0:0,0.00}", 1234.560); 
+0

不从小数中删除结尾零 - 尝试 String.Format(“{0:0,0.00}”,1234.5) – maxp 2009-10-19 09:54:12

6

另一种选择:

decimal d = 1234.56m; 
string s = d.ToString("N"); // 1,234.56 
9

您是否知道.NET内置了根据应用程序的每个用户的区域设置正确设置数字格式的支持?利用用户自己的区域设置可能会更好(.NET框架已经知道所有正确的设置)。然而,如果你想修复你的应用程序在特定的区域设置中格式化数字,你仍然可以选择你选择的特定区域,并强制.NET使用它作为所有格式化的基础(而不仅仅是数字) :

using System.Globalization; 
using System.Threading; 
... 
CultureInfo us = new CultureInfo("en-US"); 

然后

Thread.CurrentThread.CurrentUICulture = us; 

或只是

Console.WriteLine(d.ToString("c", us)); 

你应该知道的是,使用逗号作为千位分隔符的是适合于英国和美国,但它并不怎么数千应该在其他国家

“1025在显示1,025显示联邦 国家和德国1.025。在瑞典,千位分隔符是一个空格”

MSDN has dedicated section专门讨论这个话题,他们称之为‘全球化’(即是一个很好的搜索词,如果以往任何时候都需要追捕更详细)。该页面描述了如何使用井号作品的数字占位符去除尾随零(由亨克Holterman在以前的评论所说)。

又见Custom Numeric Format Strings

0

试试这个!

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
     Try 
      TextBox1.Text = Format(CInt(TextBox1.Text), "#,#") 
      TextBox1.SelectionStart = TextBox1.Text.Length 
     Catch ex As Exception 

     End Try 

End Sub 
0

试试这个:

string myNumber = string.Format("{0:#,0.00}", 1234.500); 

(我在RDLC看到这个报道)