将数字格式化为始终具有符号和小数分隔符

5
我希望将任何数字(整数或实数)格式化为字符串表示形式,该表示形式始终具有符号(正或负)和小数分隔符,但没有尾随零。
一些示例:
3.14 => +3.14
12.00 => +12.
-78.4 => -78.4
-3.00 => -3.

默认的ToString()实现是否可以实现这个功能,还是我需要自己编写代码?


1
目前还没有现成的方法可以显示一个小数点后面什么都没有(据我所知)。因此,您需要自己实现这个功能。 - Oliver
3个回答

7

试试这样:

double x = -12.43;
string xStr = x.ToString("+0.#####;-0.#####");

但是这样做不能显示小数点后面的数字。可以使用以下方法处理这种情况:

public static string MyToString(double x)
{
    return x == Math.Floor(x)
        ? x.ToString("+0;-0;0") + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
        : x.ToString("+0.####;-0.####");
}

可能是迄今为止最好的答案。但是,我觉得如果没有尾随零,我们不能强制使用小数点。 - Kevin Vuilleumier
好的,现在它完全按照我的要求工作了!谢谢! - Kevin Vuilleumier
1
假设这应该是一个扩展方法,缺少this关键字。例如:public static string MyToString(this double x) - Wyatt Earp
@WyattEarp 我同意,这很有道理,谢谢。我还要补充一下你的评论,在这种情况下,该方法应放置在一个“静态”类中。 - Dmitry

0
你可以像这样尝试:
string myFormatedString = number.ToString("+#;-#");

这不会显示小数点后的数字。 - Dmitry

0
你想使用的格式字符串是什么?
ToString("N", CultureInfo.InvariantCulture) // Displays -12,445.68

请查看此处以获取有关格式化字符串的其他选项


如果没有尾随的零,则不显示结束小数点。 - Nzall

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