将逗号千位分隔符添加到十进制(.net)

时间:2009-10-19 09:42:56

标签: .net formatting string-formatting number-formatting

我有一个十进制数字,比如1234.500。

我想将其显示为1,234.5。

我目前正在将其转换为双尾以删除尾随的'0'。

string.Format("{0:0,0}",1234.500)删除小数位,其他格式选项似乎使用两个小数位。

有人能提供见解吗?

6 个答案:

答案 0 :(得分:22)

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

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

当xx = 1234.5M时,将产生1,234.50 忘记转换为double,这实际上没有帮助。

答案 1 :(得分:10)

您是否知道.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));

您应该知道,使用逗号作为千位分隔符适用于英国和美国,但不是数千应该在其他国家/地区显示

  

“在联合国,一千零二十五显示为1,025   国家和德国1.025。在瑞典,千位分隔符是一个空间“

MSDN has dedicated section致力于这个主题,他们称之为“全球化”(即如果你需要追捕更多细节,这是一个很好的搜索词)。该页面描述了如何使用井号作为数字占位符来删除尾随零(正如Henk Holterman在之前的评论中所建议的那样)。

另见Custom Numeric Format Strings

答案 2 :(得分:8)

另一种选择:

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

答案 3 :(得分:0)

你试过这个吗?

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

答案 4 :(得分: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

答案 5 :(得分:0)

试试这个:

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

(我在RDLC报告中看到了这一点)