Foxtable(狐表)用户栏目专家坐堂 → 关于四舍五入的问题


  共有1553人关注过本帖树形打印复制链接

主题:关于四舍五入的问题

帅哥哟,离线,有人找我吗?
ap9709130
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
关于四舍五入的问题  发帖心情 Post By:2018/6/26 15:09:00 [只看该作者]

老师

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

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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2018/6/26 15:18:00 [只看该作者]

要怎么写SQL 语句才能算出:52225.01 ?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/26 17:16:00 [只看该作者]

试试改成

 

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

 

或者

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2018/6/26 17:35:00 [只看该作者]

老师

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

是什么原因?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/6/26 18:38:00 [只看该作者]

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

 

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


 回到顶部