如何将一个double格式化为字符串并仅在必要时显示小数位?

10

我有这样的代码:

lblFranshizShowInvwNoskhehEdit.Text = string.Format("{0:n}",
    (double)(int.Parse(drDarman["FranshizDarsad"].ToString()) * 
        Convert.ToInt64(RadNumerictxtPayInvwNoskhehEdit.Text)) / 100);

但是,{0:n0} 字符串格式会强制标签的文本不包含小数位,而 {0:n} 字符串格式则强制标签的文本保留 2 个小数位(默认)。

在我的情况下,我只想在必要时显示小数位并且不进行四舍五入。我该怎么做?


4
请不要在标题中加入"asp.net/c#"等内容,只需使用标签即可。此外,除了您将获取的字符串放入“Label”控件的“Text”属性中之外,这与ASP.NET无关。 - John Saunders
2个回答

23

你可以这样做:

string.Format("{0}", yourDouble);

必要时它只包含数字。

如果您想查看将双精度浮点数格式化为字符串的其他示例,请查看此链接

编辑:根据您的评论,您想要,分隔符,因此您可以执行以下操作:

string.Format("{0:0,0.########}", yourDouble);

只需在要显示的最大小数位数后面放置相应数量的 # 即可。它只会在必要时显示数字,但根据所包含的 # 数量最多显示到指定的最大数字位数。其中 # 表示只在必要时显示数字,因此如果您输入一个没有小数点的数字如123,它将显示为1,234;但是如果您输入1234.456,它将显示为1,234.456。如果您超出了指定的最大数字位数,则将进行四舍五入。

编辑:要解决双零情况,只需将其更改为:

string.Format("{0:#,0.########}", yourDouble);

现在应该完美地工作了 :)


但是在这种情况下,我会失去千位分隔符!我该如何解决? - SilverLight
非常感谢您的编辑//我真的很抱歉/但在这个新代码中,0.4就像00.4一样...如何解决这个问题? - SilverLight
@LostLord 更新了我的答案以解决那个问题。希望能有所帮助。 - Kelsey

0

这是我的:

string.Format("{0:n2}", double);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接