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

我想显示为1,234.5。

我目前正在将其转换为双重删除尾声0。

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

谁能提供见识?

有帮助吗?

解决方案

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

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

会产生 1,234.50 当xx = 1234.5m
忘记转换为 double, ,这并没有真正的帮助。

其他提示

您是否知道.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在先前的评论中所建议的那样)。

也可以看看 自定义数字格式字符串.

另一个选择:

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

你尝试过吗?

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

尝试这个 !

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

尝试这个:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top