18

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

我想将其显示为 1,234.5。

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

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

任何人都可以提供见解吗?

4

6 回答 6

26

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

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

1,234.50当 xx = 1234.5M
忘记转换为时会产生double,这不会有什么帮助。

于 2009-10-19T09:46:53.060 回答
11

您是否知道 .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 有专门的部分专门讨论这个主题,他们称之为“全球化”(即,如果您需要寻找更多细节,这是一个很好的搜索词)。该页面描述了如何使用井号作为数字占位符来删除尾随零(正如 Henk Holterman 在之前的评论中所建议的那样)。

另请参阅自定义数字格式字符串

于 2009-10-19T11:19:03.833 回答
9

另一种选择:

decimal d = 1234.56m;
string s = d.ToString("N");    // 1,234.56
于 2009-10-19T10:54:26.300 回答
0

你试过这个吗?

   String.Format("{0:0,0.00}", 1234.560);
于 2009-10-19T09:48:46.477 回答
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
于 2014-01-23T23:37:16.483 回答
0

尝试这个:

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

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

于 2017-10-07T03:40:20.053 回答