sup*_*erM 4 sql-server rounding division
在存储过程中,我有一个表达式
select @some_val_in_percents = (@total_val / 100) * @some_val
Run Code Online (Sandbox Code Playgroud)
如果我使用这样的Round功能:
select @some_val_in_percents = Round((@total_val / 100) * @some_val, 0)
Run Code Online (Sandbox Code Playgroud)
当计算整个表达式时,结果是四舍五入的,还是(@total_val / 100)四舍五入,然后乘以@some_val?
你似乎错误地计算了百分比值.这就是我所期望的:
@some_val * 100 / @total_val
Run Code Online (Sandbox Code Playgroud)
至于ROUND()函数,它将作用于表达式的最终结果,而不是部分结果.因此,首先完全评估表达式,然后ROUND()将其应用于结果.
另请注意(如果您还不知道)如果除法运算符的两个操作数都是整数,则SQL Server将执行整数除法,即除非应用之前,除法的结果将向下舍入到最接近的整数.如果你想避免这种情况,请确保至少有一个操作数不是整数,例如: ROUND()
ROUND(@some_val * 100.0 / @total_val, 2)
Run Code Online (Sandbox Code Playgroud)
另请注意第二个参数(precision),它是Transact-SQL中ROUND()所必需的.
| 归档时间: |
|
| 查看次数: |
15966 次 |
| 最近记录: |