select语句中的四舍五入问题?(50分)

  • 主题发起人 主题发起人 lhy9988
  • 开始时间 开始时间
L

lhy9988

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在做工资程序: select (岗位工资/30:保留两位小数)*天数 from...
尝试用cast(岗位工资/30*100+0.5 as int)/100 得到的却是整数,round不支持我该怎么做?
 
为什么不使用 Round 函数?如果在MSSql中 round 的语法是
ROUND
返回数字表达式并四舍五入为指定的长度或精度。

语法
ROUND ( numeric_expression , length [ , function ] )

参数
numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

length

是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。

function

是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。

返回类型
返回与 numeric_expression 相同的类型。
 
好象有的软件里是用整数的 就是说你要取两位小数 就用*100的数据来运算
最后形成报表的时候/100显示
 
paradox是不是不支持round操作?
那该怎么办?
 
可以用format。一定行。
 
sql语句里面用format?
能否告知如何用?
 
例如:query1.add(format('select * from xx where xx="%s",[edit1.text]'));

//%s:string形,还有%f,%d等等看看帮助吧。
 
不是这个意思

比如: 我用 select field1*field2 from ...
我想让field1*field2显示在 dbgrid中的小数只能是3位,该怎么写sql?
 
参照以下代码:format接取时自动进行四舍五入。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.text :=Format('%8.2f', [strtofloat(edit1.text)]);//
end;

end.
 
format('%8.2f',[cast(岗位工资/30*100+0.5)]/100)
 
其实,你使用计算字段后,你就不需要问别人了。
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
489
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
592
import
I
后退
顶部