各位朋友:
有一在开发过程中出现的问题, 一直没有找到解决的办法, 现公布出来, 希望大家发挥助人为乐的精神, 或求助其它人, 找出处理办法来, 在此致谢!
问题是:
在ms sql server环境下的数值字段结构的设置与处理, 现在设定的字段是 decimal(21,8), 保留8个小数字, 但是在现有的程序处理过程中小数点位数只能保存4位. 我的程序在bde连接时, 设定ENABLE BCD := 'TRUE', 这是为保证存盘数据不会出现误差而作的, 如果设定'FALSE'则比如数值 16.4 会变成 16.3999, 只有设定为'TRUE'可以避免这个问题, 但是, 设定为'TRUE', 小数字数就只能存为4位(设定为'FALSE'可以保存为8位), 这两方面发生冲突.
如何设定这样的字段结构, 使之不会产生误差, 且能有8位小数, 这就是我想实现的, 请各位帮助, 找出解决问题的方案.
可在线讨论,工作日8:00~18:00在线
MSN:[email protected] QQ:66557239
有一在开发过程中出现的问题, 一直没有找到解决的办法, 现公布出来, 希望大家发挥助人为乐的精神, 或求助其它人, 找出处理办法来, 在此致谢!
问题是:
在ms sql server环境下的数值字段结构的设置与处理, 现在设定的字段是 decimal(21,8), 保留8个小数字, 但是在现有的程序处理过程中小数点位数只能保存4位. 我的程序在bde连接时, 设定ENABLE BCD := 'TRUE', 这是为保证存盘数据不会出现误差而作的, 如果设定'FALSE'则比如数值 16.4 会变成 16.3999, 只有设定为'TRUE'可以避免这个问题, 但是, 设定为'TRUE', 小数字数就只能存为4位(设定为'FALSE'可以保存为8位), 这两方面发生冲突.
如何设定这样的字段结构, 使之不会产生误差, 且能有8位小数, 这就是我想实现的, 请各位帮助, 找出解决问题的方案.
可在线讨论,工作日8:00~18:00在线
MSN:[email protected] QQ:66557239
解决方案 »
- 除了tocrdll识别验码的外?还有别的吗?
- 很简单的hook问题,delphi的~
- 一个弹出窗口的问题?
- 如何程序更改屏幕的象素点的颜色位数,如16bits/pixel 32bits/pixel
- DBGrid重画的问题
- 能力?文凭?来者有分
- access中这个sql该怎么写?急急急!!!
- 刚学DELPHI,谁告诉我TQUERY,TTABEL,ADOQUERY1,ADOTABEL,DATABASE他们的区别
- Delphi 中如何操作 Word ?
- 如何获取服务器的时间和间隔?
- 我在界面中加入的dblookupcombobox,在设置它的ListField,KeyField两个属性时,总弹出提示框"无效的授权说明",怎么才能设置这两个属性啊
- 宜春人在深圳,群号是11681163,欢迎老乡加入。。。。。。。。。。。
把剩余的4位,放里面扔就好了.
我曾經考慮過這樣解決,但有所不同,我是將整個字段都設成varchar類型,但是事實上不行,因為我需要在後台做大量的運算
(1)我的程序规模可观,现在改用ADO并不现实;
(2)我的BDE版本为5.01,不知道最新版本是多少?
(3)问题中我已经说明清楚,如果ENABLE BCD设为TRUE,4位小数都是准确的,你字段定义为decimal(8, 3)应该遇不到我所说的问题,你可以尝试定义为decimal(21, 8);
2、可以把计量单位改小,比如本来是kg,改为mg,就增大了1000000倍,小数就只有两位了
这种方法,我已思考过,上面我已经说明,我的程序规模比较大,每个这种类型的字段均放大10^8倍,并且后台运算程序也需要修改,修改工作量可想而知,不大现实;
(1) 我刚测试过,定义为decimal(21, 10),存储在MSSQL里面的值只是多了两个9,即为16.3999999999,误差依然存在,我期望存储的结果为:16.4
(2) 修改计量单位的可行性不大,我的数据库这种类型的数据类别比较多,没有办法控制修改计量单位,另:像kg这样的单位有mg,但是有的单位根本就没有这种能缩小的单位,比如最常见的“个”;