我应该如何用Double解析Infinity?

tom*_*msv 4 c# double parsing infinity

如果我试试

Double.Parse("Infinity")
Run Code Online (Sandbox Code Playgroud)

我明白了

Double.Parse("Infinity") threw an exception of type 'System.FormatException'
Run Code Online (Sandbox Code Playgroud)

为什么?如果我想要解析它并获得具有无限值的Double,我该怎么办?

tom*_*msv 9

我刚刚发现了这个:

Decimal.Parse("Infinity", System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

将工作并返回值为+ Infinity的双精度数.

它不起作用的原因是,我认为,我不是自动在InvariantCulture中,而是在de-DE文化中,它不能处理确切的字符串"Infinity".(也许它会处理其他一些字符串.)


Kam*_*ski 6

也许试试这个:

if(yourstring.ToLower() == "infinity")
{
   yourdouble = double.PositiveInfinity;
}
Run Code Online (Sandbox Code Playgroud)

  • 我会把它变成`if(yourstring.ToUpper()=="INFINITY")`以防万一;) (4认同)

Car*_*ine 5

以下所有解析都是有效的,因为您的系统设置不同会导致问题.正如dontomaso上面回答的那样,只需要添加Invariant Culture.

Double.Parse("NaN", System.Globalization.CultureInfo.InvariantCulture)
Double.Parse("-Infinity", System.Globalization.CultureInfo.InvariantCulture)
Double.Parse("Infinity", System.Globalization.CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)