C#:无法将字符串解析为双精度

时间:2018-11-01 08:20:29

标签: c# parsing

_day.Latitude =“ 64.128339”

_day.Longitude =“ -20.995595”

public override void Prepare(ItineraryDay day)
{
    _day = day;

    var isParseLatitude = double.TryParse(_day.Latitude, out var latitude);
    var isParseLongitude = double.TryParse(_day.Longitude, out var longitude);

    _dayPositionInfo = new DayPositionInfo(
        latitude,
        longitude,
        _day.RouteName);
}

enter image description here

如您在图片中所见,“纬度”和“经度”是有效的双精度值,但“解析”无效,并返回false? 为什么,我什么都不懂?

2 个答案:

答案 0 :(得分:3)

我怀疑您当前的区域性没有使用.字符作为小数点分隔符,这就是Double.TryParse返回false的原因。

如果您知道小数点分隔符始终是.,则可以执行以下操作:

bool isValidLatitude = Double.TryParse("64.128", NumberStyles.Any, CultureInfo.InvariantCulture, out double latitude);

PS:如果需要检查当前区域性的小数点是什么,请使用

Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator

答案 1 :(得分:-1)

Convert.ToDouble("64.128339");
double.Parse("64.128339");