create table test(n numeric(9,6),d decimal(28,6),f float(50))
对于float类型没有这个问题,但numeric,decimal都有这个问题。
用ADO连接numeric,decimal会自动变成enable bcd没有这个问题,但只能输入4位小数了。
对于float类型没有这个问题,但numeric,decimal都有这个问题。
用ADO连接numeric,decimal会自动变成enable bcd没有这个问题,但只能输入4位小数了。
解决方案 »
- DirectX 截图问题
- QRmemo 如何设置其行间距啊
- 自动获取数库名并查询这些数据库
- 求助,谁能上传给我一个连接数据库的例子
- 各位高手,请帮忙呀!小弟很急呀!!!!怎样将数据新增到ClientDataSet的本地缓冲中去。
- 急!!!为什么dbgrideh的footer不能汇总值,怎样控制在 里面录入数据时不能输两个小数点,各位请帮忙!
- 请问有没有Tstringfield,Tmemofield等这样的组件呀,谢谢!!
- =?UTF-8?B?解码(indy10,idpop3,idmessage.subject)
- 大虾请进,小小菜鸟相请,MessageDlg救急!!!
- 这个功能应该如何实现?高分请教,不够可以再加
- 怎么会提示 TypeInfo.dcu 文件找不到呢?
- 一个PageControl问题,大虾save me!!!!!!!
我的解決方案是:
使用TDataBase控件,在Params中設置:ENABLE BCD=True 在前台自動轉換成Float問題得到解決,但存在問題:1:前台在TDataSet(如TQuery)控件中建立永久性字段時如果包括字段符型(如Varchar型)字段則有可能出錯,所以在設了該屬性時建議不要再使用永久性字段;2:小位數最多隻能輸入四位。
我要用的是超过4位小数,问题还是没有解决.
1.我想你可能用数据敏感控件了吧,如果没用的话可以在显示时用format应该就可以解决了吧
2.或者用sql去查询时,用数据库自带的类似format的函数来格式化一下
我没有进行测试,但估计应该可以行的通
字段用Longint类型。在DELPHI内做Single与Longint的转换
建议参考如下帖子,也许有所启发:
http://expert.csdn.net/Expert/topic/1563/1563263.xml?temp=.1756708
首先我问你:为什么用ODBC就没有这样的问题呢?
其次用BDE:为什么31.7会在存储后变成31.69999999而32.7就没有任何变化呢?如果你说这不是BDE的错,那你帮我解释一下好吗?
data: record
case integer of
0: (datLong: integer);//4 bytes
1: (datSingle: single);//4 bytes
end;
明显 datLong 与 datSingle 占用相同的空间。Single是可以存小数的。所以如果你不够笨的话现在应该明白如何往longint字段存小数值了。
比如你决定程序最多支持5位小数,那就把 31.69999999转成 31.70000,去掉末尾的0得到31.7。如果你不确定你的程序的小数精度,那就不好办了。当然也可以用楼上师兄的办法。用Extended类型,它占10个字节. 我不是高人,不知道Extended在SQL中对应的类型是什么。
即使自宫未必成功,
若不自宫也可成功。
哈哈.............
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————