在SQL Server库中,字段类型用的是INT,但我在求百分数时结果总为0,因为INT除以(/)INT结果只取整数部分。是否有什么函数或其它办法能解决这个问题

  • 主题发起人 主题发起人 于小澜
  • 开始时间 开始时间

于小澜

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL Server库中,字段类型用的是INT,但我在求百分数时结果总为0,因为INT除以(/)INT结果只取整数部分。是否有什么函数或其它办法能解决这个问题?(88分)<br />
 
real:=int/int
 
觉得你没有说清楚
如果是int型你又要存小数 =我理解错了
1)统计后在取整
2)如果你取小数后两位可以先*100 然后按%理解 我记得银行似乎就是这么作的
 
我给你举个例子:
男生(int类型):24 人
女生(int类型):22 人
男生占总人数的百分数,要求精确到小数点后两位
 
怎么会呢?
ff:real;
ff:= 24/(24+22);
Edit1.Text := formatfloat('0.00',ff);
结果是0.52啊。怎么会=0?
 
可能是你的变量类型设得不对,设为INT去了,你再看看。
 
在SQL server中,用SQL语句直接进行这种计算,
首先要用cast将其中一个转换成结果类型。
 
果然是一刀!
 
var
f:real;
begin
f:=24/(22+24);
f:=round(f*100)/100;
end;
 
select round(1.0*男生/(男生+女生),2) from class1
 
不好意思,应该是100.0,不是1.0——
select round(100.0*男生/(男生+女生),2) as 男生百分比 from class1
 
就按照River5000的思路没有问题,实在要自己规范格式可以把这个字段用string自己加小数点!
 
强制类型转换。
 
SELECT 男生,女生,ROUND(男生/CAST((男生+女生)*100 AS FLOAT(8)),2) FROM STUDENT
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部