以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于四舍五入的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=120929)

--  作者:ap9709130
--  发布时间:2018/6/26 15:09:00
--  关于四舍五入的问题
老师

今天我发现一个很奇怪的问题:

我在代码编辑器中输入以下代码: Output.show(Round2(1505*34.701,2))     结果是:52225.01    这个没有问题,是对的

但是如果在SQL语句中,用表达式列:   ROUND({销售订单明细}.产品数量*产品销售价,2) as 金额    列中的产品数量 是:1505   销售价是:34.701    但是金额列的结果是:52225 .

没有四舍五入.这个是怎么回事?
    

--  作者:ap9709130
--  发布时间:2018/6/26 15:18:00
--  
要怎么写SQL 语句才能算出:52225.01 ?
--  作者:有点甜
--  发布时间:2018/6/26 17:16:00
--  

试试改成

 

ROUND({销售订单明细}.产品数量*产品销售价+0.0001,2) as 金额

 

或者

 

cast(round({销售订单明细}.产品数量*产品销售价,2)  as numeric(20,2)) as 金额


--  作者:ap9709130
--  发布时间:2018/6/26 17:35:00
--  
老师

方法1可以,
方法2不行.

是什么原因?

--  作者:有点甜
--  发布时间:2018/6/26 18:38:00
--  

应该是精度问题,计算结果比如是 19.015 有可能计算机计算后得到的是 19.01499999999999999999

 

保存2位的时候,直接用4,把4舍弃了。