如何将double格式化为字符串并在必要时仅显示十进制数字?

我的代码如下:

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

但是{0:n0}字符串格式强制标签的文本不具有十进制数字, {0:n}字符串格式强制标签的文本具有2个十进制数字(默认)。

在我的场景中,我只想在必要时使用十进制数字/没有舍入它们/我该怎么做?

你可以这样做:

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

它将在必要时仅包含数字。

如果您想要格式化双精度的其他示例,请查看此链接 。

编辑:根据你的评论你想要的分隔符,你可以这样做:

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

只需要为要显示的最大小数位数添加# 。 它只会在必要时显示数字,但最多可以根据格式中包含的#显示。 #表示只在必要时显示一个数字,所以如果你给出一个没有小数的123这样的数字,它将显示为1,234但如果你给它1234.456 ,它将显示为1,234.456 。 如果超出指定的最大数字,它们将被舍入。

编辑:要修复双零情景,只需将其更改为:

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

那现在应该完美了:)

这是我的 :

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