【问题标题】:string to double issue, dot is removed字符串加倍问题,点被删除
【发布时间】:2013-02-20 12:31:09
【问题描述】:

我有一个字符串值,包含经度或纬度值。

但是,当我尝试将其转换为双精度时,我最终得到一个数字,其中点被删除并放在末尾。

这不是我想要的。我错过了什么?

这是我得到的值:200,5,1.4928184,0.1609203 这是我用来获取值的方法:

 var responseBytes = ms.ToArray();
                var encoding = new System.Text.ASCIIEncoding();
                var coords = encoding.GetString(responseBytes);
                var parts = coords.Split(new char[] { ',' });


//this piece of code returns me wrong values! When I debug this piece parts[2] is exactly 1.4928184
                return new Coordinaat(Double.Parse(parts[2]),
                    Double.Parse(parts[3]));

构造函数参见下面的代码示例:

 public Coordinaat(double lat, double lon)
        {
            this.Latitude = lat;
            this.Longitude = lon;
        }

输出: lat 114928184 lon 01609203 --> 我的点去哪儿了??

【问题讨论】:

    标签: c# typeconverter


    【解决方案1】:

    您可能处于导致这种影响的文化(例如德国)之下。解析时使用CultureInfo.InvariantCultre

    Double.Parse("123.22",CultureInfo.InvariantCulture)
    

    【讨论】:

    • 荷兰系统可能与德国文化相同。这解决了它。谢谢。
    • 或在荷兰文化下(或几乎任何欧洲大陆文化)。
    • @dtb,对德国文化也有类似的经历,但不知道大多数欧洲文化也是如此
    • 详细说明,在荷兰文化下,分隔符"." 被认为是数字的任意“分组”(千位分隔符,NumberGroupSeparator),"," 是分隔整数的字符小数部分,所以42.012.345,67 是一个“好”的荷兰数字。并且1.4928184 将与14.928.184 相同(分组分隔符或多或少被忽略,只有逗号重要)。
    • 即使使用 invariantCulture 也会遇到同样的问题
    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多