以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于SQL语句中ROUND 的用法  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=132845)

--  作者:ap9709130
--  发布时间:2019/3/31 14:18:00
--  关于SQL语句中ROUND 的用法
 老师

     我今天在做项目时,遇到一个很奇怪的问题,SQL语句如下 :
 s e le ct (se le ct Sum(产品数量*IIF(产品成本价 > 0,产品成本价,产品票面价)) from {订单明细表} where 订单编号 = {订单主表}._Identify) as 总金额 f rom {订单主表} where _Identify = 24723

   在执行SQL中可以得到结果:30937.545 。 我希望得到的结果是:30937.55 于是我改了SQL 如下:

se le ct ROUND((s ele ct Sum(产品数量*IIF(产品成本价 > 0,产品成本价,产品票面价)) from {订单明细表} where 订单编号 = {订单主表}._Identify),2) as 总金额 from {订单主表} where _Identify = 24723

   可是结果是:30937.54  怎么样写才能得到: 30937.55 ?  我改了以下几种,结果都是:30937.54
1.s ele ct (se lec t ROUND(Sum(产品数量*IIF(产品成本价 > 0,产品成本价,产品票面价)),2) from {订单明细表} where 订单编号 = {订单主表}._Identify) as 总金额 from {订单主表} where _Identify = 24723
2.s ele ct (se le ct Sum(ROUND(产品数量*IIF(产品成本价 > 0,产品成本价,产品票面价),2)) from {订单明细表} where 订单编号 = {订单主表}._Identify) as 总金额 from {订单主表} where _Identify = 24723

希望老师指点。多谢!



--  作者:ap9709130
--  发布时间:2019/3/31 15:32:00
--  
请看附件图片。谁能告诉我,怎么会这样?


图片点击可在新窗口打开查看此主题相关图片如下:round.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/3/31 15:33:06编辑过]

--  作者:有点甜
--  发布时间:2019/4/1 10:55:00
--  

那你试试用format函数,如

 

format(30937.545, \'0.00\')


--  作者:ap9709130
--  发布时间:2019/4/1 12:34:00
--  
 老师,

这是一个很大的问题,一直没人反应吗? 做财务设计时,一分钱 是很大的问题.

是什么原因,怎么会这样的呢?

--  作者:ap9709130
--  发布时间:2019/4/1 12:38:00
--  
有点甜老师

测试 format(30937.545, \'0.00\') 是可以的.


图片点击可在新窗口打开查看此主题相关图片如下:round.png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2019/4/1 13:01:00
--  

 

round函数执行的是【四舍六入五成双】的规则,不是【四舍五入】。其实,前者更符合实际需求。

 

 

[此贴子已经被作者于2019/4/1 13:01:20编辑过]

--  作者:ap9709130
--  发布时间:2019/4/1 13:01:00
--  
但是这里有个问题,变成的不是数字,还要转换过来.

我还发现一个问题,如果用Round(参数+0.0000000001,2) ,就可以了.和 fox的 Round2 函数一样. 有这种问题.

--  作者:有点甜
--  发布时间:2019/4/1 13:02:00
--  
round函数执行的是【四舍六入五成双】的规则,不是【四舍五入】。其实,前者更符合实际需求。
--  作者:ap9709130
--  发布时间:2019/4/2 21:48:00
--  

甜老师

 

我发现是数字就没有问题,可以4舍五入,怎么会这样,请看图:

 


图片点击可在新窗口打开查看此主题相关图片如下:aa.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/4/2 21:59:00
--  
这个无解的。数据库设计就是如此。

如果有特殊需求,那就完整取值到程序里再处理