如何简便的定义小数点位数.(30分)

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

rss

Unregistered / Unconfirmed
GUEST, unregistred user!
一个使用Dbase数据库的应用,对一个表使用Query进行
即时性的计算,该如何控制小数点位数那?
例:
SELECT (d1-d2)/d1*100 as d3 from Biao;

将得到如 2.3456789087 这样的结果,我需要 2.34.

1.由于是即时性的计算,不要考虑使用设计期定义字段.
2.将dbase的BCD设为True,得到整数.
3.使用CAST函数不起作用.



 
是不是保留2位小数,不考虑四舍五入?不是很理解题目.
实在不行,把计算后的数值转换成字符串,任意截取后在转换成数值.
 
我的意思是Query后在DBGrid中显示的结果集保留小数两位.
 
select convert(decimal(5,2),(d1-d2)/d1*100) as d3 from Biao
在SQL Server下可以,Dbase不知道可不可以.
 
使用Trunc函数
 
我知道Delphi里的各种小数转换函数,我不是这个意思,
你想:用Query得到的结果是个数据集,即时反映在Dbgrid中,
用Trunc类的函数怎么做?一个个转换再放回吗?

 
为什么“不要考虑使用设计期定义字段.“,在query的字段中定义显示格式
有什么不好?
 
select substring(cast((d1-d2)/d1*100+100 as Character(25)) from 2 for 5) as d3 from Biao;
试了好几个数据类型都不行,有decimal多好,可是没有用,char()起码要20个字符
才可以.
本地SQL的限制太大了.基本达到要求,就是前面还有0,将就吧.
 
在TABLE的FIELD中有DIAPLAYFORMAT,改成 ' .00'
 
感谢wgzhang:

只要这样就全搞定了!

select cast(substring(cast((d1-d2)/d1*100+100 as Character(25)) from 2 for 5) as float) as d3 from Biao;

 
后退
顶部