小编Dmi*_*kis的帖子

SQL str()vs round()函数

在使用str()函数时,我发现在某些情况下,round()舍入错误,而round()函数按预期工作.请看一下这个例子:

declare @v decimal(18,2) = 29.95
select str(@v, 18, 1)
--29.9
select round(@v, 1)
--30.00

set @v = 39.95
select str(@v, 18, 1)
--40.00
select round(@v, 1)
--40.00
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会这样?

EDIT1:我使用以下基本代码测试了不同的变通方法:

declare @v decimal(18,2) = 9.95
declare @r varchar(100)
declare @c int = 1000000
declare @ms int
declare @dt datetime2

set @dt = sysdatetime()

while @c > 0
begin
    set @r = --different roundings
    set @c = @c - 1
end

set @ms = DATEDIFF(ms, @dt, sysdatetime())
select @ms, @r …
Run Code Online (Sandbox Code Playgroud)

sql rounding

6
推荐指数
1
解决办法
1074
查看次数

标签 统计

rounding ×1

sql ×1