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

时间:2010-07-14 04:48:54

标签: c# numbers format decimal string-formatting

我的代码如下:

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

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

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

2 个答案:

答案 0 :(得分:23)

你可以这样做:

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

必要时仅包含数字。

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

编辑:根据您的评论,您需要,分隔符,以便您可以这样做:

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

只需为您要显示的最大小数位数添加#。它只会在必要时显示数字,但会根据您在格式中包含的#数量来显示最大数字。 #表示只在必要时显示数字,因此如果您提供的数字不是123而没有小数,则会显示为1,234,但如果您给它1234.456,则将显示为1,234.456。如果超出指定的最大数字,它们将被舍入。

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

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

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

答案 1 :(得分:0)

这是我的:

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