关于ACCESS货币类型字段的问题(100分)

  • 主题发起人 主题发起人 tanxh
  • 开始时间 开始时间
T

tanxh

Unregistered / Unconfirmed
GUEST, unregistred user!
使用MSACCESS数据库。
我有一个关于商品信息的表格,价格字段是货币类型(可以有1-4位小数),
我现在想控制其小数位数(2位或4位),可是当我将18.20或18.2000赋给货币字段时
却变成了18.1999;但如果输入18.20001,却能接受为18.2。
请问有什么办法可精确控制小数位???

是否是浮点数变换造成的,能让系统不进行浮点书转换吗?
就象SYBASE数据库可以使用BCD方式来表示数据。

请指教!
谢谢!!!

 
修改表结构设计,把货币类型字段的'小数位数'属性从'自动'改为'2'
 
若你在DELPHI编程中,你也可以更改qry.Fields[0].DisplayFormat:='#.00'属性来达到要求.
 
补充:
我使用DELPHI 5,BDE连接数据库。
TO zlb98:
你说的修改我也作过,不管用。看帮助,那似乎是针对显示,而非针对数据存储的。

我现在的处理办法是,赋值前先加一个小数(0.00001)。计算后赋值暂时没问题了,
但手工录入时怎么办?不可能要求人家输入18.20001之类的吧。
 
TO zhangkan:
如你所说,显示是没什么问题了;可是如果价格字段参与计算,就会得出矛盾的结果。
比如:1000*价格 = 18199.9 而非18200.0,数量越大最后结果差异就越大了。
即参与计算的值实际上并非是显示的值。怎么办???
 
我好象没碰到这种问题。
 
先请问你,既然是货币类型,为什么要4位小数呢????
 
正好我也遇到了这个问题。解决的方法如下:
使用双精度浮点数。
使用ACCESS的int函数。。。
Int((字段)*100+0.5)/100
可以保证你的字段保存的是小数点后两位的精度,可以在SQL语句中使用。

4位的精度当然必要。
如有的产品的价格是含税的,去税后如果不保证4位精度的话误差太大,财务要求保存4位
 
accsee2000好象没有这个问题
 
to apiao:
你这样理论上是可以保证精度了,可是浮点数表示有可能会给你捣乱的,
比如:18.20 变成了18.1999,这应该是系统的问题,可我们有没有办法防止呢?

欢迎各位继续不吝指教!
谢谢!
 
一、不用货币方式,用双精度方式。显示如上说述
二、不同数据类型计算,整数转为浮点数再计算
 
不用货币字段类型,用浮点类型,然后转换
浮点数尽量用double类型,而少用float类型

字符串-->浮点数
AnsiString Str = "11.12";
double Num = StrToFloat(Str);

浮点数-->字符串
double Num = 11.12;
AnsiString Str = FloatToStr(Num);

浮点数之间的运算可用下列方法控制:
double a1 = 11.12;
double a2 = AnsiString::FormatFloat("0.00",a1).ToDouble();
 
Accse好像没这问题,试试用ADO连接,还有,数据库的设计,要精确到4位,数据库需要定义6位,
才能保证。
 
我也碰到过,是BDE的问题,解决方法:
将BDE中的Enable BCD选项置为True,需要把BDE的Database页和Configuration页的相应项都更改。
然后在程序中,将Table的Fields.Editer中的相关字段删除后重新添加,再次编译后即可正常。
但是这样更改后只能保存4位有效小数,小数点后第5位开始将被四舍五入,如果你的程序要求精度超过4位小数,就不要这样更改。
 
To westboy2000:
可是MSACCESS 数据库的BDE设置中无“ENABLE BCD”选项。怎么办?
 
怎么会没有?我可是天天都看到它的[:)]
你打开BDE Administrator,添加你的Access数据库,就可以看到“ENABLE BCD”选项。
 
to westboy2000:
你用的是ODBC(Microsoft Access Driver (*.mdb)),
不知他与MSACCESS,有何区别?速度怎样?
 
还是用ADO来连接ACCESS库吧!
 
不要再用BDE连接ACCESS了,若是这样,无论你怎么设置都是没用的,改用ADO后可解决问题。
 
多人接受答案了。
 

Similar threads

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