如何使用Double.TryParse方法(String,NumberStyles,IFormatProvider,Double)

Bil*_*Isa 2 .net c#

我正在尝试解析具有值"-51.739253997802734"的经度.

var unknownGeoCoordinate = GeoCoordinate.Unknown;
double latitude;
double longitude;
var numberFormatInfo = new NumberFormatInfo { NumberDecimalSeparator = ".", NegativeSign = "\u2212", NumberNegativePattern = 1 };
const NumberStyles style = NumberStyles.AllowLeadingSign | NumberStyles.Number | NumberStyles.AllowDecimalPoint;

if (!double.TryParse(latLng.First(), style, numberFormatInfo, out latitude) || !double.TryParse(latLng.Last(), style, numberFormatInfo, out longitude))
    return unknownGeoCoordinate;
Run Code Online (Sandbox Code Playgroud)

条件

double.TryParse(latLng.Last(), style, numberFormatInfo, out longitude)
Run Code Online (Sandbox Code Playgroud)

始终返回false并且未设置经度.它只发生在前缀为" - "的字符串上.

Han*_*ing 7

您专门将NumberNegativeSign设置为"\ u2212".这可能是官方的Unicode减号,但不是编程语言或数据通信中常用的.

当我使用普通的" - "(\ u002D,Hyphen-minus)时,你的例子解析.您的解析失败,因为输入中的负号不是您指定的.