之前项目当中的接入的高德逆地理编码功能偶尔会出现参数错误的bug,经过排查服务端异常log,发现请求的url中的location参数中的小数点变成了逗号。

代码如下

        public async Task<MapResult> GetMapResultAsync(double lat, double lng)
{
string url = string.Format("http://restapi.amap.com/v3/geocode/regeo?output=json&location={0},{1}&key={2}",
lng.ToString(), lat.ToString(), GouldAk);
GolderMapResult res;
try
{ string json = await HttpHelper.GetAsync(url);
json = json.Replace("[]", "\"\"");
res = JsonConvert.DeserializeObject<GolderMapResult>(json);
if (res.resultBase.addressComponentBase.city.IsNullOrWhiteSpace())
res.resultBase.addressComponentBase.city = res.resultBase.addressComponentBase.province;
}
catch (Exception ex)
{
Logger.Error("请求高德地图失败:" + url);
throw ex;
}
if (res.status != )
{
Logger.Error("请求高德地图失败");
throw new UserFriendlyException("请求高德地图失败,状态码:" + res.status + " 说明:" + res.info + " url:" + url);
} return res;
}

其中 lng.ToString(), lat.ToString() 转换string的时候,偶尔会把中间的点号转成逗号,于是造成高德api返回参数错误。

后来在网上查找原因,参考这篇博客http://blog.chinaunix.net/uid-9255716-id-107923.html

对于用“.”分隔千位,用“,”分隔小数的国家,1,234.56 将会格式化成 1.234,56。如果您需要结果无论在什么语言下都是一样的,就请使用 CultureInfo.InvariantCulture 作为语言。

接下来就简单了,贴修改后的代码

        public async Task<MapResult> GetMapResultAsync(double lat, double lng)
{
string url = string.Format("http://restapi.amap.com/v3/geocode/regeo?output=json&location={0},{1}&key={2}",
lng.ToString(CultureInfo.InvariantCulture), lat.ToString(CultureInfo.InvariantCulture), GouldAk);
GolderMapResult res;
try
{ string json = await HttpHelper.GetAsync(url);
json = json.Replace("[]", "\"\"");
res = JsonConvert.DeserializeObject<GolderMapResult>(json);
if (res.resultBase.addressComponentBase.city.IsNullOrWhiteSpace())
res.resultBase.addressComponentBase.city = res.resultBase.addressComponentBase.province;
}
catch (Exception ex)
{
Logger.Error("请求高德地图失败:" + url);
throw ex;
}
if (res.status != )
{
Logger.Error("请求高德地图失败");
throw new UserFriendlyException("请求高德地图失败,状态码:" + res.status + " 说明:" + res.info + " url:" + url);
} return res;
}

只是把 lng.ToString(), lat.ToString() 替换成了 lng.ToString(CultureInfo.InvariantCulture), lat.ToString(CultureInfo.InvariantCulture) ,这样这个bug就解决了。

.net double类型转string类型的坑的更多相关文章

  1. C++ double类型转string类型后,怎么实现小数点后只显示一个数字

    C++ double类型转string类型后,怎么实现小数点后只显示一个数字 #include <iostream> #include <sstream> #include & ...

  2. 自己挖的坑自己填--Mybatis mapper文件if标签中number类型及String类型的坑

    1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段 ...

  3. Java int类型与String类型互转

    String类型转换为int类型 参考:https://blog.csdn.net/qq_35995940/article/details/78433404?locationNum=5&fps ...

  4. Date类型与String类型的相关问题

    今天完成boss交代的任务时,遇到Date类型与String类型的相关问题,参考了网上的一些例子,并且自己写了demo,现在记录下了总结一下: (一)判断一个字符串是不是合法的日期格式 public ...

  5. PHP 将json的int类型转换为string类型 解决php bigint转科学计数法的问题

    /** * 将json的int类型转换为string类型 * @param $str * @param int $minLength 最小的转换位数,即只有大于等于这个长度的数字才会被转换为字符串 * ...

  6. Java 类类型之 String 类型

    类类型 引用数据类型存的都是地址,通过地址指向对象: 基本数据类型存的都是具体值: 字符串 (String) 类型 特点: 1.字符创都是对象: 2.一旦初始化,不能被更改,字符串缓冲区支持可变的字符 ...

  7. 设置实体类型中String类型的属性值为String.Empty

    /// <summary> /// 将String类型的属性值设置为String.Empty /// </summary> /// <typeparam name=&qu ...

  8. Hadoop错误1(Text类型与String类型)

    在此类的博客中,博主主要记录的是在Hadoop实践过程中遇到的一些错误,先上一个代码 protected void map(Object key,Text value, Context context ...

  9. linq中将int类型转换为string类型,toString()报错

    今天同事在调试程序的时候,报了一个不寻常的错误, “LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 ...

  10. asp.net MVC Model 类的主键 int类型、string类型、GUID类型。

    在使用asp.net mvc进行定义 模型类的时候,一般情况下,我们都会定义一个属性为 int iD{get;set;} 或为int ClassNameID {get;set;},在这种情况下 1.I ...

随机推荐

  1. Spring系列(三):Spring IoC中各个注解的理解和使用

    原文链接:1. http://www.cnblogs.com/xdp-gacl/p/3495887.html       2. http://www.cnblogs.com/xiaoxi/p/5935 ...

  2. Java中浮点数的精度问题 【转】

    当您在计算Money的时候,请看好了!!!要不损失了别后悔!!! 现象1: public static void main(String[] args) { System.out.println(0. ...

  3. java项目获取根路径(web项目和application项目的区分)

    Java项目中经常要读取配置文件,涉及到读取配置文件的地方,就会要读定位文件的路径.因此,在项目如何正确获取文件路径尤为关键. 根据不同的java项目,在获取文件路径时候有一些 小区别 测试环境:E: ...

  4. bestcoder round 74 div2

    随便看了一场以前的bestcoder,然后顺便写了一下,都不码的样子 有中文题面,这里就不写题目大意了 T1. 刚开始想复杂了,T1可能是4道题里面想的最久的 我们大概弄一下就可以发现,如果a[i]& ...

  5. 关于html以及js相关格式验证的记录

    关于html中禁止输入的一些写法主要是实现实时监听值:      下面的例子实现的事只运行输入数字切小数位数不能超过两位的示例.      1. onkeyup事件是在输的时候在键盘松开的时候进行触发 ...

  6. ubuntu18.04安装安装JDK

    1.前提准备: 下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2. ...

  7. C# 读取XML节点属性值

    xml文件格式如下: <?xml version="1.0" encoding="UTF-8" ?> <Product type=" ...

  8. Python定时任务框架APScheduler

    http://blog.csdn.net/chosen0ne/article/details/7842421 APScheduler是基于Quartz的一个Python定时任务框架,实现了Quartz ...

  9. Java开源生鲜电商平台-监控模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-监控模块的设计与架构(源码可下载) 说明:Java开源生鲜电商平台-监控模块的设计与架构,我们谈到监控,一般设计到两个方面的内容: 1. 服务器本身的监控.(比如:linux ...

  10. Day1----Python学习之路笔记(1)

    学习路线 Day1 Day2 Day3 Day4 Day5 ...待续 一.了解开发语言 1.高级语言:Python,Java,C++,C#,PHP,JS,Go,Ruby,SQL,Swift,Perl ...