以文本方式查看主题 - 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舍弃了。 |