我有一个十进制数字,比如1234.500。
我想将其显示为1,234.5。
我目前正在将其转换为双尾以删除尾随的'0'。
string.Format("{0:0,0}",1234.500)
删除小数位,其他格式选项似乎使用两个小数位。
有人能提供见解吗?
答案 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在之前的评论中所建议的那样)。
答案 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报告中看到了这一点)