往SQL Server6.5中输入的数字为什么会变小?(50分)

  • 主题发起人 主题发起人 hyh
  • 开始时间 开始时间
H

hyh

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用Delphi4.0对一个SQL Server6.5表进行insert操作。发现有几个
numeric(6,1)型的字段,有时输入一个数字后,数字莫名其妙地会变小0.1。
若定义字段在小数点后有两位,有时仍发现输入的数字小数点最后一位数字变
小1。但此现象并非每次输入数据时均发生,真让我头疼!

希望各位高手尽快指点迷津!
 
可能是delphi的BUG了,在Database Desktop中也是这样。
 
建议你使用SQL语句"insert table (field1,field2...) values (value1,value2...)
绝对不会出此问题了!!!!
 
Delphi 自己没有Numeric类型,只有real和double是都占8个字节的浮点类型,可以
直接与Sql Server 6.5中的float类型相对应,不需要进行类型转换。而浮点类型本
身是一种不太精确的类型,清华大学出版社出的一本Sql Server 6.5的书在数据类型
部分专门用小字提到对Sql Server 6.5写入浮点数时可能会有轻微误差。因此我猜测
是Delphi与Sql Server 6.5传递数据时,real与Numeric转换出了误差,将Numeric
类型重新定义为float类型时就消除了数据变化的问题,如果将Numeric改为real也存
在数据变化的现象,我认为是Sql Server 6.5的real类型只占4个字节的原因。
 
《SQL Server 6。5开发指南》(第二版)86页黑体字: 各种数据类型的精度

清华大学出版社
 
cytown的没错,给分吧
 
在我使用delphi+mssql6.5的经验里,所有的Numeric(n,p)字段都用float类型,至于小数点后面的位数,在DisplayFormat里确定。
 
感谢大家的帮助!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部