Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置数字格式,使其始终具有符号和小数分隔符_C#_.net_Format_String Formatting - Fatal编程技术网

C# 设置数字格式,使其始终具有符号和小数分隔符

C# 设置数字格式,使其始终具有符号和小数分隔符,c#,.net,format,string-formatting,C#,.net,Format,String Formatting,我想将任何数字(整数或实数)格式化为字符串表示形式,始终具有符号(正或负)和小数分隔符,但没有尾随零 一些样本: 3.14 => +3.14 12.00 => +12. -78.4 => -78.4 -3.00 => -3. 是否可以使用一个默认的ToString()实现,或者我需要自己编写此实现?尝试以下操作: double x = -12.43; string xStr = x.ToString("+0.#####;-0.#####"); string myFor

我想将任何数字(整数或实数)格式化为字符串表示形式,始终具有符号(正或负)和小数分隔符,但没有尾随零

一些样本:

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

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

尝试以下操作:

double x = -12.43;
string xStr = x.ToString("+0.#####;-0.#####");
string myFormatedString = number.ToString("+#;-#");
但这无助于显示尾随小数点。您可以使用以下方法处理此类情况:

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

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

要使用的格式字符串为

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

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

如果没有尾随零,则不显示结束小数点。这不会显示小数分隔符后的数字。这可能是迄今为止最好的答案。但是,我觉得如果小数点不是尾随的零,我们就不能强制小数点。好了,现在它的工作原理和我想要的完全一样!谢谢假设这是一个扩展方法,则缺少
this
关键字。i、 e.
公共静态字符串MyToString(这个双x)
@WyattEarp我同意,这很有意义,谢谢。我必须在你的评论中补充一点,在这种情况下,方法应该放在
静态类中。目前还没有实现的方法来显示后跟nothing的十进制分隔符(AFAIK)。所以你必须在自己身上实现这一点。