社区
MS-SQL Server
帖子详情
存储过程中插入浮点数怎么不对?
qwertxp
2006-08-15 12:03:22
自己弄了个简单的存储过程,插入表中有个float字段。用普通sql语句正常插入,但使用存储过程带参数插入就不对。比如插入157.03,插入的却是157.029998779297。
郁闷,这个怎么回事啊?怎么解决?
...全文
138
4
打赏
收藏
存储过程中插入浮点数怎么不对?
自己弄了个简单的存储过程,插入表中有个float字段。用普通sql语句正常插入,但使用存储过程带参数插入就不对。比如插入157.03,插入的却是157.029998779297。 郁闷,这个怎么回事啊?怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liangpei2008
2006-08-15
打赏
举报
回复
用DEC 或 NUMERIC来存储浮点型
因为用FLOAT进行存储时,SQL会采用一种算法来存储!并不是原封不动地将数据放入数据库中
数字化从业者老高
2006-08-15
打赏
举报
回复
使用Decimal(18,2)
xyxfly
2006-08-15
打赏
举报
回复
numeric(10,2)
qwertxp
2006-08-15
打赏
举报
回复
谢谢各位~得解~
MySQL
浮点数
和定点数
MySQL
浮点数
和定点数
为什么MySQL的
浮点数
类型不够精准?(实例证明)
MySQL
浮点数
类型不精准,因此,在一些对精确度要求较高的项目
中
,不要使用
浮点数
。为什么不精确呢?下面通过一个简单的实例来分析。1、创建一个表,指定price字段为DOUBLE
浮点数
类型 2、
插入
两条数据 3、查看数据,并把两个商品价格相加 实际结果为:1.0999999999999999' 当我们需要以通过数值对比为条件进行查询,一旦出现误差,就查不出需要的结果了: 4、为什么会出现这种情况?我们分析下MySQL对浮点类型数据的存储方式。FLOAT(4字节)和DOUBLE(8字节)都
Android SQLite
插入
float类型
浮点数
小数位数异常(四舍五入过的两位小数变成13位小数)的原因和解决方法
类型的数据只能存储约7位有效数字,如果
插入
的数据精度超过了这个范围,那么SQLite会自动将其截断或四舍五入,从而导致小数位数变长的现象。方法会根据传入的值类型自动转换数据类型,可能会导致精度丢失的问题。我选择了第二种,用回最原始的拼接SQL直接执行的方式,安全靠谱简单。类型,它们都可以存储高精度的数据。另外,为了避免精度丢失的问题,你可以将。方法会根据传入的值类型自动转换数据类型,可能会导致精度丢失的问题.如果你需要在SQLite
中
存储精度较高的数据,可以考虑使用。方法
插入
的,而
浮点数
异常的是通过。
Unity
中
的
浮点数
在 C#
中
,float 是 32 位的,能够精确到 7 位,而 double 是 64 位的,能精确到 15 位。这些都是不完全准确的,因为这些类型在内部是以二进制的形式存储的,只有某些十进制小数可以精确地转换为二进制小数。如果要比较两个
浮点数
是否相等,通常的做法是检查它们是否 “足够接近”,也就是它们之间的差的绝对值是否小于一个很小的正数。这些小数在计算机
中
可以被精确表示。,对于这样的无限小数,计算机无法精确存储,会在一定的位数后进行截断或者四舍五入,这样就会产生精度误差,这是由
浮点数
的表示方法决定的。
C语言
中
浮点数
在内存
中
的存放和取出
符号位(1位) 指数位(8位) 尾数位(23位) s e1 e2 e3 e4 e5 e6 e7 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29 m30 m31 m32。
浮点数
在内存
中
的存储格式一般分为三个部分:符号位、指数位和尾数位。指数位用来存储指数的值,并采用偏移码表示;其
中
,s表示符号位,e1~e8表示指数位,m1~m23表示尾数位。
MS-SQL Server
34,587
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章