社区
其他数据库
帖子详情
Interbase中的浮点数的处理问题
HappyLifqd
2003-12-17 03:32:34
我现在正在使用Interbase,可是现在我遇到了如何处理Interbase的问题,描述如下:我定义了一个Numeric类型的的字段,但我输入的1.21,它会出现1.21000000212的值,这是怎么回事,请问各位大侠,这种问题该如何解决
...全文
78
6
打赏
收藏
Interbase中的浮点数的处理问题
我现在正在使用Interbase,可是现在我遇到了如何处理Interbase的问题,描述如下:我定义了一个Numeric类型的的字段,但我输入的1.21,它会出现1.21000000212的值,这是怎么回事,请问各位大侠,这种问题该如何解决
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
HappyLifqd
2003-12-19
打赏
举报
回复
谢谢康先生的帮忙,我用的是IBEXPERT,可能是它的问题,它不管你将NUMERIC怎么设置,都不会正确的显示,这可能是它本身的问题吧
剑雷
2003-12-18
打赏
举报
回复
将SQL Dialect设为3
CuteBit
2003-12-18
打赏
举报
回复
hi,HappyLifqd(姜福寿)
我给你详细解释一下.
数字在计算机中表达有两种方式:定点和浮点
定点数是使用 int/int64 来表达一个数字.这样的表达精确,但相对范围小.比如很多数据库中支持的 Currency 类型就是使用定点方式存储的.在 ib/fb 中,没有直接支持这个类型,但它对其实就是 Numeric 类型做了处理.当 Numeric(d,y) d <= 9/12 (具体是 9 还是 12 受数据库 Dialect 影响,因为 Dialect=3 支持 bigint 也就是 int64 类型,所以它的定点数范围要大,达到 12.注意,客户端连接时选择 3 ,数据库也必须是 Dialect = 3 时 Dialect = 3 的新特性才生效.如果,客户端 = 1,数据库是3,在操作有 Numeric(12,X)/bigint/datetime 等类型的数据是被提示:Client SQL dialect 1 does not support reference to bigint/datetime datatype 类似的错误),其实也和 Currency 是一样的.
浮点数是使用 IEEE 定义的表达方式存储数字.它的范围很广.但存在精度问题(要了解为什么,请查阅浮点数存储的原理).数据库中 DOUBLE PRECISION/FLOAT 这样的类型就是浮点存储的.在 ib/fb 中,Numeric(D,X) 当 D 大于一定数字比如 15 ,ib/fb 自动使用浮点存储.
我的数据表定义
FLD1 DOUBLE PRECISION Nullable
FLD NUMERIC(10, 2) Nullable
FLD2 FLOAT Nullable
在 isql 中显示
FLD1 FLD FLD2
======================= ===================== ==============
1.210000000000000 1.21 1.2100000
fld2 显示正确是因为 isql 知道处理了 float 字段.
但在 SQL Explorer<delphi/bcb 中的一个工具>就没有这么走运了.
FLD1 FLD FLD2
======================= ===================== ==============
1.210000000000000 1.21 1.21000003814697
因为 VCL 中的 TField(SQL Explorer 是 delphi/bcb 编写的) 使用 double 来处理 float.
BTW: 要查看数据库的 Dialect 用 gstat -h 的命令;修改 Dialect 用 gfix -sql_dialect 命令.
HappyLifqd
2003-12-18
打赏
举报
回复
康先生,你好,你说的这两个办法我都试过了,还不行,首先,谢谢你的帮忙,其次,我想再请问一下,有没有别的办法,或者如果要比较两上浮点数的大小,应该如何操作,谢谢
HappyLifqd
2003-12-18
打赏
举报
回复
将SQL Dialect设为3,我现在设的就是Dialect 3
CuteBit
2003-12-17
打赏
举报
回复
这是个计算机浮点运算问题,不是 ib 的问题.
Numeric(6,2)这样的定义可能能解决.
如果在 fb1.5 中可以用 Numeric(10,2) 这样更大的表达方法.
如果你存放的数字范围大,可以使用, DOUBLE PRECISION 类型.
PostgreSQL数据库管理(二)
Inprise 的
Inte
r
Base
以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。 从技术角度来讲,...
Inte
r
Base
7
Inte
r
base
7 2010-09-29 00:11:13| 分类: 数据库|举报|字号 订阅
Inte
r
Base
70还提供了新的API函数用来监测
Inte
r
Base
客户端版本,这些函数是: isc_get_client_version() isc...
[UDF系列]如何编写
Inte
r
Base
UDF 之一
如何编写
Inte
r
Base
UDF(作者:Gregory Deatz - Hoagland, Longo, Moran, Dunst & Doukas)warton 译 译者叙:由于
Inte
r
Base
性能方面表现突出,并且它是开源和跨平台的,有很多使用Delphi,C++Builder的程序员开始采用...
[UDF系列]如何编写
Inte
r
Base
UDF
由于
Inte
r
Base
性能方面表现突出,并且它是开源和跨平台的,有很多使用Delphi,C++Builder的程序员开始采用它做为其后数据库平台。但是
Inte
r
Base
的
中
文资料简直太少了。昨日,一网友在CSDN上提到
Inte
r
Base
的UDF(user ...
VB速查大全(数据库、表格及报表编程) ★ VB错误
处理
,ado常见错误,VB数据类型等,网上有很多教程是错的,强烈建议看此文
VB异常
处理
(很重要) ado常见错误 ado游标及锁定介绍 免费报表控件 免费表格控件 vb数据类型(很多程序出
问题
出在这个,一定要看,VB msdn说的不太对) VB可用的AES加密sqlite_odbc 及 cairo_sqlite ...
其他数据库
2,209
社区成员
9,519
社区内容
发帖
与我相关
我的任务
其他数据库
其他数据库开发 其他数据库
复制链接
扫一扫
分享
社区描述
其他数据库开发 其他数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章