【问题标题】:Format a number to always have a sign and decimal separator [duplicate]将数字格式化为始终具有符号和小数分隔符[重复]
【发布时间】:2014-09-08 13:27:51
【问题描述】:

我想将任何数字(整数或实数)格式化为总是具有符号(正或负)和小数分隔符,但没有尾随零。

一些示例:

3.14 => +3.14
12.00 => +12.
-78.4 => -78.4
-3.00 => -3.

是否可以使用默认的ToString() 实现之一,还是我需要自己编写?

【问题讨论】:

  • 目前还没有实现的方式来显示小数点分隔符后跟无 (AFAIK)。所以你必须自己实现。

标签: c# .net format string-formatting


【解决方案1】:

试试这样的:

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.####");
}

【讨论】:

  • 可能是最好的答案。但是,我觉得如果小数点后面没有零,我们就不能强制使用小数点。
  • 好的,现在它就像我想要的那样工作了!谢谢!
  • 假设这应该是一种扩展方法,this 关键字缺失。即public static string MyToString(this double x)
  • @WyattEarp 我同意,这是有道理的,谢谢。我必须在您的评论中补充一点,在这种情况下,该方法应该放在 static 类中。
【解决方案2】:

你可以这样试试:

string myFormatedString = number.ToString("+#;-#");

【讨论】:

  • 小数点后不显示数字。
【解决方案3】:

你要使用的格式字符串是

ToString("N", CultureInfo.InvariantCulture) // Displays -12,445.68

有关格式字符串的其他选项,请参阅 here

【讨论】:

  • 如果没有尾随零,则不显示结束小数点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多