数据库存储过程中float型数据的精度问题

nbshiny 2009-11-29 04:25:27
在做aspx.net程序的时候用到sql server数据库,先建立一个数据表,相应的字段格式都是float型的,
然后在aspx程序中,通过
SqlParameter[] prams = {
DataBase.MakeInParam("@name", SqlDbType.VarChar, 6,name.Text.Trim()),
DataBase.MakeInParam("@dx", SqlDbType.Float, 8,(float)(Math.Round(float.Parse(dx.Text.ToString())*100))/100),

DataBase.MakeInParam("@rs", SqlDbType.Decimal, 5,float.Parse(rs.Text.ToString())),
DataBase.MakeInParam("@rsbh", SqlDbType.Float, 8,float.Parse(rsbh.Text.ToString())),

来传递值,但是发现在我断点测试的过程中,这些float.Parse(rs.Text.ToString()))数据都是1.64这种,但是当程序执行完成,写入数据库的时候就是1.63XXXXXX,很长的后缀,我不知道问题出在哪里了。谁碰到过,麻烦说一下。我这里用decimal也没用,不知道是不是用错了。谢谢。
...全文
683 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 nbshiny 的回复:]
您说的这些设置是在数据库的表里面设置,是吧?不是在程序代码中设置吧。
[/Quote]
1.表里设置.
2.程序里面用decimal(18,2)
nbshiny 2009-11-29
  • 打赏
  • 举报
回复
您说的这些设置是在数据库的表里面设置,是吧?不是在程序代码中设置吧。
dawugui 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nbshiny 的回复:]
在这个代码里面decimal(18,2)怎么写入,我看就一个decimal类型,然后一个字节数,你这里18,2是两个数字,怎么写?
[/Quote]
定义的位数和小数位,不是两个数.
pt1314917 2009-11-29
  • 打赏
  • 举报
回复
decimal(18,2)表示整数位、小数点、小数位共18位,小数位保留2位
dawugui 2009-11-29
  • 打赏
  • 举报
回复
float的是非精确数据,具体请参考联机帮助.

float 和 real
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。

语法
float [ ( n ) ]

从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。

n 所在范围 精度 存储大小
1-24 7 位数 4 字节
25-53 15 位数 8 字节


Microsoft® SQL Server™ float[(n)] 数据类型对于从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。

real

从 ?3.40E + 38 到 3.40E + 38 之间的浮点数字数据。存储大小为 4 字节。在 SQL Server 中,real 的同义词为 float(24)。

nbshiny 2009-11-29
  • 打赏
  • 举报
回复
在这个代码里面decimal(18,2)怎么写入,我看就一个decimal类型,然后一个字节数,你这里18,2是两个数字,怎么写?
pt1314917 2009-11-29
  • 打赏
  • 举报
回复
如果只想保存两位小数,可以在数据库中使用numeric(12,2)
华夏小卒 2009-11-29
  • 打赏
  • 举报
回复
decimal(10,2)应该不会精度不对吧
dawugui 2009-11-29
  • 打赏
  • 举报
回复
用decimal应该行的.
例如:decimal(18,2)

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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