100分,快!Select语句取出的小数位问题。(100分)

  • 主题发起人 主题发起人 Riantwin
  • 开始时间 开始时间
R

Riantwin

Unregistered / Unconfirmed
GUEST, unregistred user!
一个Paradox数据库Order.db,字段OrderNum,Price,OrderSum类型均为Number,用如下语句
形成新字段:
Select (OrderSum/Price) as AvgSum,(OderSum/OrderNum) as AvgPrice From ''Order.db''
AvgSum要求小数位是2位,AvgPrice要求小数位是4位 。如165.63,而不是165.629999999998,该怎样用一条Select语句
既可以计算又可以控制小数位?
 
Select round((OrderSum/Price),2) as AvgSum,round((OderSum/OrderNum),4) as AvgPrice From ''Order.db''
 
为什么要这样做,你可以把拿到数据以小数后2位的形式显示出来?
若在Select时已经是2位小数且以后会用这些数据进行其它计算,就会有精度误差.
 
以上两种方法都能实现,根据实际,灵活运用,一定能行
 
同意楼上的
 
用Select后,再用TBatchMove添加到Paradox数据库中,显示当然有办法,但是我现在需要的是
保存在数据库中的数据以及打印(王寒松大侠的eReport)数据位是指定的2位获4位。
 
建议字段不要使用Number型而改用Currency(货币型)
 
用str函数 str(float,length,deciaml)
float:要转换的值
length:返回的字符串长度
deciaml:小数位数
Select str((OrderSum/Price),15,2) as AvgSum,str((OderSum/OrderNum),15,4) as AvgPrice From ''Order.db''
 
To Liuchengr:
用Str不行,是不是Paradox数据库的原因,
Select str((OrderSum/Price),15,2) as AvgSum,str((OderSum/OrderNum),15,4) as AvgPrice From ''Order.db''
用Round也不行。
To Zhukewen:
Number型而改用Currency(货币型),如何才能不显示货币符号?

 
选出数据,鼠标右击Query ,Add All Fields,然后对应字段改一下Displayformat 0.00
或0.0000
 
To ugvanxk:
DisplayFormat 只能解决显示问题,不能解决保存在数据库中的数据位数问题。
我用的是Paradox数据库,不是SQL Server,Sybase,Oracle等,因此Str,Round不支持。
 
那你在数据添加到数据库前先把数据转换成2位小数,
显示时用ugvanxk的方法。
 
Srt()过程的格式如下
procedure Str(X [:Width [:Decimals]];Var S);
X是代表实型数;S是变参,代表替换后的字符串;Width代表宽度;Decimal代表小数位。
如Str(S1:8:2,S2)代表将实数型S1转换为字符串S2,转换后宽度为8,小数取两位!
 
多人接受答案了。
 
后退
顶部