c# –Double未在MySQL数据库中正确存储

c# –Double未在MySQL数据库中正确存储,第1张

概述我有一个MVC应用程序,它有一个宁静的服务,可以更新数据库的纬度和经度.我将值作为字符串发送到API,并在将其作为Double存储在数据库中之前将其转换为Double.这是我用来将字符串转换为double的代码:Double _latitude, _longitude; try { Double.TryParse(lattitude, Number

我有一个MVC应用程序,它有一个宁静的服务,可以更新数据库的纬度和经度.我将值作为字符串发送到API,并在将其作为Double存储在数据库中之前将其转换为Double.这是我用来将字符串转换为double的代码:

Double _latitude,_longitude;try{     Double.TryParse(lattitude,NumberStyles.Any,CultureInfo.CurrentCulture,out _latitude);     Double.TryParse(Longtitude,out _longitude);}catch(Exception e){     _latitude = 0;     _longitude = 0;}

当它存储在数据库中时,我缺少小数点.例如:

53.345634 is stored as 53345634

我有这个工作在windows 2012上运行的开发环境.但当它转移到windows 2008生产服务器时,我看到了这个问题.最佳答案指定正确的IFormatProvIDer / CultureInfo

您观察到的行为可能是由于两台机器具有不同的CurrentCulture而导致的. CurrentCulture的默认值取决于windows的版本.

要在各种机器上获得一致的结果,您应该为Parse或TryParse方法提供特定的CultureInfo(或实现IFormatProvIDer的任何其他类),例如:

// using System.Globalization;double value = Double.Parse(stringValue,CultureInfo.InvariantCulture); 

要么

double valueUsEnglish = Double.Parse(stringValue,new CultureInfo("en-US"));

Parse方法使用特定于区域的小数点符号和组分隔符号.在某些语言中(例如英语),小数点符号是点,而在其他语言中(例如波兰语),它是逗号.组分隔符号在各种语言中也不同.

如果将53.345634解析为53345634,则您的计算机将使用其中dot为组分隔符的区域性.

Parse与TryParse

您还应该考虑使用Parse of TryParse方法是否更合适.

如果在正常 *** 作期间您的程序期望无效输出(例如,它是用户提供的值),您绝对应该使用TryParse并检查返回值. TryParse返回一个bool,指示解析是否成功并且不会抛出异常.

如果您正在解析的值永远不会出错(例如,您正在解析与您的程序绑定的资源),则可以使用Parse.如果您有某种方法可以恢复或向用户提供一些其他信息,则可以捕获适当的例外情况.根据文档,可能的例外是:ArgumentNullException,FormatException和OverflowException.

总结

以上是内存溢出为你收集整理的c# – Double未在MySQL数据库中正确存储全部内容,希望文章能够帮你解决c# – Double未在MySQL数据库中正确存储所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存