关于数据库读写Float类型的问题

benyouyong 2008-03-27 03:00:13
我在数据库存储BOM单位用量,用的float类型,值是5.2,查询分析器查出来的值变成了5.2000000000000002.何解??

我用sqldatareader 读取时 dr(sqldatareader对象)


CBomDetail cbd = new CBomDetail();
string cmdstr = "select MTL_PARENT_CODE, MTL_PARENT_EDITION,RELATION_EDITION, SELF_LEVEL_QUANTITY,QUANTITY_UNIT, MP_FLAG, REMARK " +
"from ENG_BOM_DETAIL where MTL_PARENT_CODE='" + partID + "' and RELATION_EDITION='" + edition + "'";
if (cn.State == ConnectionState.Closed)
cn.Open();
SqlCommand cmd = new SqlCommand(cmdstr,cn);
SqlDataReader dr = cmd.ExecuteReader();
//if (dr.HasRows)
while(dr.Read())
{
cbd.PartCode = dr.GetString(0);
cbd.PartEdition = dr.GetString(1);
cbd.RelationEdition = dr.GetString(2);
cbd.SelfLevelQuant =dr.GetFloat(3);
cbd.QuantityUnit = dr.GetString(4);
cbd.MpFlag =char.Parse(dr.GetString(5));
cbd.Remark = dr.GetString(6);
}

cn.Close();
return cbd;


cbd.SelfLevelQuant =dr.GetFloat(3);
报异常 指定的转换无效、
...全文
174 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
benyouyong 2008-03-27
  • 打赏
  • 举报
回复
问题解决了。先转成double在转成float。都是数据没有double这个类型惹的祸啊。。散分!
benyouyong 2008-03-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hbxtlhx 的回复:]
有值,是个什么类型的值?
报错转换无效,要么值为空,要么值不可能转换为Float类型。所以你要看一下这个值是什么,比如一个字符串类型不能直接转成Float。
[/Quote]

值是有的,用getvalue(3)获得的值是5.2 转换的时候就出错。
是不是5.2000000000000002的长度超过Float类型的长度?
whoami333 2008-03-27
  • 打赏
  • 举报
回复
你可以改用decimal类型。
北京的雾霾天 2008-03-27
  • 打赏
  • 举报
回复
有值,是个什么类型的值?
报错转换无效,要么值为空,要么值不可能转换为Float类型。所以你要看一下这个值是什么,比如一个字符串类型不能直接转成Float。
paulmake 2008-03-27
  • 打赏
  • 举报
回复
这个问题我遇到过,我是在很接近的两个数字相减时就会出现这种情况,当时的解决方法是自己保留几位小数。。。
float类型是挺麻烦的,我有时候数据库中取出的0和form控间中的0比较都会显示不相等。。
benyouyong 2008-03-27
  • 打赏
  • 举报
回复
在顶一下~
benyouyong 2008-03-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hbxtlhx 的回复:]
dr.GetFloat(3); 出错,可能值是DBNull.Value
[/Quote]
我调试时用 dr.getvalue(3)测试下。是有值的。
Ki1381 2008-03-27
  • 打赏
  • 举报
回复
float是有这个问题。做比较,特别是试图判别是不是等于某个值时一定要当心。
北京的雾霾天 2008-03-27
  • 打赏
  • 举报
回复
你可以在取值前先用SqlDataReader.IsDBNull 方法来判断一下值是否存在。
北京的雾霾天 2008-03-27
  • 打赏
  • 举报
回复
dr.GetFloat(3); 出错,可能值是DBNull.Value
benyouyong 2008-03-27
  • 打赏
  • 举报
回复
up,,waiting in line

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧