我不会评判你想在这里做什么的好坏
来自msdn:
无论格式字符串如何,如果 Single 或 Double 浮点类型的值是正无穷大、负无穷大或不是数字 (NaN),则格式化字符串是相应 PositiveInfinitySymbol、NegativeInfinitySymbol 或当前适用的 NumberFormatInfo 对象指定的 NaNSymbol 属性。
因此,正如 here 建议的那样,您可以重新配置您的 CultureInfo 以使用您想要的 NaN、PositiveInfinity、NegativeInfinity 的任何字符串表示形式,但请注意它们是 string 值,所以它们不会t 格式为0,00。你可以清楚地将它们的字符串值设置为0,00("0,00"是一个合法的string值),像这样:
public static readonly CultureInfo GreekCultureInfoWithoutNanInfinity0dot00 = CreateCultureInfoWithoutNanInfinity("gr-GR", "0.00");
private static CultureInfo CreateCultureInfoWithoutNanInfinity(string name, string format)
{
var ci = new CultureInfo(name);
string num = (0d).ToString(format, ci);
ci.NumberFormat.PositiveInfinitySymbol = num;
ci.NumberFormat.NegativeInfinitySymbol = num;
ci.NumberFormat.NaNSymbol = num;
return ci;
}
然后在您想将数字格式化为希腊格式"0.00" 时,使用GreekCultureInfoWithoutNanInfinity0dot00 作为文化,
或者你可以直接新建一个
public static string FormatNoNaN(IFormatProvider provider, string format, double obj1)
您在哪里处理NaN、PositiveInfinity、NegativeInfinity 的“特殊情况”。