各位朋友:
有一在开发过程中出现的问题, 一直没有找到解决的办法, 现公布出来, 希望大家发挥助人为乐的精神, 或求助其它人, 找出处理办法来, 在此致谢!
问题是:
在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
解决方案 »
- 散分,顺便找本书
- 网页文本输入框文本显示
- adoquery中查询出数据后,希望打印显示在dbgrid中的全部数据,希望高手指点
- 如何判断一个EXE已经开始运行
- 在线等:如何实现纯代码编程访问Access数据库而不利用到任何ADO组件编程
- memo换行
- 有关form的问题?
- http://www.csdn.net/expert/topic/667/667616.xml?temp=.89349帮我up也好吧,看看吧
- 【新群54461161】Delphi学习加速度
- 谁右好的报表控件????
- 我在界面中加入的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,但是有的单位根本就没有这种能缩小的单位,比如最常见的“个”;