首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于四舍五入的有关问题请问

2012-01-26 
关于四舍五入的问题请教?我在入库明细表中设置了如下的公式:如下:字段如下:入库单号,入库数量(money),含税

关于四舍五入的问题请教?
我在入库明细表中设置了如下的公式:
如下:
字段如下:入库单号,入库数量(money),含税单价(money),税率(money),不含税单价,含税金额,不含税金额.折扣(money)
其中含税单价(money)是4位小数.
用户在录入入库明细的时候,只要输入入库数量和含税单价和税率,其中不含税单价,含税金额,不含税金额我是设置公式的.
不含税单价(round((isnull([含税单价],0)   *   isnull([入库数量],0)   /   (1   +   [税率])   *   (1   -   isnull([折扣],0))   /   100   *   100   /   [入库数量]),4))。
不含税金额(round((isnull([含税单价],0)   *   isnull([入库数量],0)   /   (1   +   [税率])   *   (1   -   isnull([折扣],0))   /   100   *   100),2))
含税金额(round((isnull([入库数量],0)   *   isnull([含税单价],0)   *   (1   -   isnull([折扣],0))   /   100   *   100),2))

用户输入:入库数量=2304,含税单价=6.7000,税率=0.17,得出:不含税单价=5.73(有四舍五入),含税金额=15436.80,不含金额=13193.84(没有四舍五入),应该是:13193.85才对的.
请教我的公式是不是有错,还是我的数据类型有错.为什么不四舍五入.请教大家,谢谢!

[解决办法]
四舍五入最后一位通常有1的误差.

尽量在中间变量用3位小数.结果用2位小数.
[解决办法]
(1)你的常量,如0,100之类,改为0.0, 100.0
(2)在数据库里公式不要用round,因为你有的结果是另一个公式的参数,在查询时再用Round。在用计算器手工计算增值税时,如果提前四舍五入了也有这个问题。
[解决办法]
应该仅对结果四舍五入
[解决办法]
用cast转换下 numeric(10,4),再对它前两位小数四舍五入
[解决办法]
不要在计算公式中四舍五入,对结果四舍五入
[解决办法]
convert(char(4),ziduan)

热点排行