sql 四舍五入问题? 20

在sql查询里要将数据四舍五入,使用ROUND函数得不到相要的结果,如:ROUND(82.305,2)得到的结果是:82.3,而我想得到82.31的结果,就是只要大于或等... 在sql查询里要将数据四舍五入,使用ROUND函数得不到相要的结果,
如:ROUND(82.305,2)得到的结果是:82.3 ,而我想得到82.31的结果,就是只要大于或等于5就进位。

请问在SQL查询语句里要怎么才能四舍五入得到82.31的结果啊?
谢谢各位!
已经解决了,我用的SQL2000,是因为字段类型设为:float 型了,改成decimal型后,SELECT ROUND(82.305, 2) 得到了82.31的结果.
展开
 我来答
lzp4881
2008-10-29 · TA获得超过2394个赞
知道大有可为答主
回答量:2825
采纳率:0%
帮助的人:2997万
展开全部
Round函数(四舍六入五成双)(转)2007-06-09 15:20Round(所在单元:Math)

功能说明:对一个实数进行四舍五入。(按照银行家算法)

参考实例:

var

I, j: Integer;

begin

i := Round(1.5); // i等于2

j := Round(2.5); // j等于2

//注意Round(2.53)=3

end;

在Delphi中使用Round函数得到的答案有时与我们所预期的会不太一样:
采用的是四舍六入五留双。即当舍或入位大于或小于五时按四舍五入来处理,而当舍或入位等于五时,就要看前面一位是什么,根据奇进偶不进,它总是返回一个偶数值。
示例 结果
i:= Round(11.5) 12
i:= Round(10.5) 10

这种Round其实是按照银行家算法,统计学上一般都用这种算法,比传统的"四舍五入"要科学。
如果要使用传统的"四舍五入"方法,可以使用下面算法:

//提供者FlashDance(10040231) 15:15:58
var
D1,D2:Double;
begin
D1:=3.14159;
D2:=StrToFloat(Format('%.5f',[D1]));
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
WHITE_WIN
2008-10-29 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1905万
展开全部
在这种情况下,您会得到82.3的结果:
DECLARE @DEC DECIMAL(12,1)
SELECT @DEC=ROUND(82.305,2)
SELECT @DEC

或在前台显示过程中截断了后面的位数

而下面的查询结果,则是正确的(82.31):
SELECT ROUND(82.305,2)

DECLARE @DEC DECIMAL(12,2)
SELECT @DEC=ROUND(82.305,2)
SELECT @DEC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
离戏论
2008-10-29 · TA获得超过392个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:79.9万
展开全部
SELECT ROUND(82.305, 2)
得到的结果就是82.31呀,你是什么数据库,我用的是SQLSERVER2000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式