float,昨天晚上被你折磨死了
2011-04-10 20:12 随风浪迹天涯 阅读(633) 评论(8) 编辑 收藏 举报最近接了一个毕业设计的项目,到现在接近尾声了。很诡异的是,刚刚在做金额总额的时候,碰到了一个很奇怪的问题,我不知道各位童鞋有没有和我一样的经历,呵呵~~~我来分享一下吧。因因毕业设计是有关租房的,所以有一个字段是"zujin"(租金[我承认这个命名真的很恶心]),当我在models的时候,我是这样定义它的:
/*月租金*/ private float zujin; public void setZujin( float zujin) { this .zujin = zujin; } public float getZujin() { return this .zujin; } |
这里的字段是 float,没有错。然后,我做金额总和的时候,去取它的值,如下:
protected float getZujinByHourseID( int housrID) { float zujin = 0; using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { string strSQL = "select zujin from hourse where hourseId=@hourseId " ; cmd.CommandText = strSQL; cmd.Parameters.AddWithValue( "hourseId" , housrID); zujin = ( float )(cmd.ExecuteScalar()); } } return zujin; } |
上面蓝色字体就是我们所关注的代码,因为在数据库中把"zujin"这个字段的类型设置为了float,所以我想在我取的时候,也应该是这个类型。
ExecuteSclalar()这个函数是从select中取出第一行的第一条数据,在本例中也就是租金。可是,但我运行的时候,发现“类型转换错误”,报错。
我刚开始,很纳闷。然后赶忙去检查数据库中的字段类型,然后又检查models里的类型,都没错啊!经过调试在调试之后,我就开始了最原始的办法,一个一个类型的进行转换。
最后,功夫不负有心人,找到了这个Convert.ToSingle 函数 转换成功。然后,我刚开始以为这会对精度有影响,但后来我确认后,对精度没有影响。还好。
自此,正确代码如下:
protected float getZujinByHourseID( int housrID) { float zujin = 0; using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { string strSQL = "select zujin from hourse where hourseId=@hourseId " ; cmd.CommandText = strSQL; cmd.Parameters.AddWithValue( "hourseId" , housrID); zujin = Convert.ToSingle(cmd.ExecuteScalar()); } } return zujin; } |
还有后面取的值,也是这样用的:
while (dr.Read()) { float LiveWater =Convert.ToSingle(dr.GetDouble((dr.GetOrdinal( "LiveWater" )))); float Other = Convert.ToSingle(dr.GetDouble((dr.GetOrdinal( "Other" )))); Response.Write( "生活费d:" + LiveWater + "其他费用:" + Other); } |
我这里还是觉得float,用的很不方便,一不小心 会把人给折磨怕的,就比如我吧,昨天晚上我足足的弄到了3点钟,牺牲了好多的睡眠,真实可惜。所以,我还是在建议在存储字段类型到时候,用double 比较安全吧。当然,只是个人建议。呵呵!
出处:http://www.cnblogs.com/damonlan
Q Q:*********
E_mail:Damon_lan@163.com or Dongcai.lan@hp.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步