.NET 4中如何将Double.PositiveInfinity显示为“Infinity”而非∞?
解决.NET 4中Double.PositiveInfinity输出为"Infinity"的问题
当然有办法实现这个需求!在.NET里,浮点数的字符串表示是受当前线程的文化设置影响的——默认情况下如果系统区域设置使用了支持Unicode符号的文化,就会把正无穷输出为∞,但我们可以通过几种简单的方式让它输出标准的Infinity:
方法1:使用不变文化(InvariantCulture,最推荐)
这是最直接且通用的方式,在调用ToString时传入CultureInfo.InvariantCulture,它会使用独立于系统区域的标准英文格式:
using System; using System.Globalization; public class Program { public static void Main() { Console.WriteLine("PositiveInfinity {0}.", Double.PositiveInfinity.ToString(CultureInfo.InvariantCulture)); } }
运行这段代码后,就能得到你预期的PositiveInfinity Infinity.输出,而且这个结果不会因为系统区域设置的变化而改变,稳定性很强。
方法2:修改当前线程的全局文化设置
如果你的整个应用都需要统一使用这种格式输出浮点数,可以修改当前线程的文化属性:
using System; using System.Globalization; using System.Threading; public class Program { public static void Main() { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Console.WriteLine("PositiveInfinity {0}.", Double.PositiveInfinity); } }
注意这种方式会影响线程内所有依赖文化的操作,所以如果只是单个输出需要调整,方法1会更灵活。
方法3:手动判断并替换输出
如果需要更自定义的控制逻辑,可以先判断是否为正无穷,再手动指定输出内容:
using System; public class Program { public static void Main() { double infinityValue = Double.PositiveInfinity; string displayText = double.IsPositiveInfinity(infinityValue) ? "Infinity" : infinityValue.ToString(); Console.WriteLine("PositiveInfinity {0}.", displayText); } }
这种方式适合需要对特殊值做个性化处理的场景,比如同时处理负无穷或者NaN的情况。
内容的提问来源于stack exchange,提问作者Priyanka
相关产品推荐
相关产品推荐

