在存储过程中我有一个像这样的表达式
select @some_val_in_percents = (@total_val / 100) * @some_val
如果我使用Round
像这样的函数:
select @some_val_in_percents = Round((@total_val / 100) * @some_val, 0)
计算整个表达式时结果是否会四舍五入或将(@total_val / 100)
进行四舍五入并乘以@some_val
?
您似乎错误地计算了百分比值。这是我期望的样子:
@some_val * 100 / @total_val
至于ROUND()
函数时,它将作用于表达式的最终结果,而不是部分结果。因此,首先对表达式进行完全求值,然后ROUND()
应用于结果。
另请注意(如果您还不知道),如果除法运算符的两个操作数都是整数,则 SQL Server 将执行整数除法,即除法的结果将是向下舍入到最接近的整数偶数before ROUND()
被申请;被应用。如果您想避免这种情况,请确保至少有一个操作数不是整数,例如像这样:
ROUND(@some_val * 100.0 / @total_val, 2)
另请注意第二个参数(精度),这是必需的事务处理SQLROUND().
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)