아래 쿼리가 있습니다.SQL 데이터 유형 반올림
declare
@a NUMERIC(20,4)
set @a=24900*0.3333333333
select @a
나는 8299.999999
을 기대하고 있지만 8300.00
을 제공합니다. 어떤 시체가 나를 도울 수 있습니까?
아래 쿼리가 있습니다.SQL 데이터 유형 반올림
declare
@a NUMERIC(20,4)
set @a=24900*0.3333333333
select @a
나는 8299.999999
을 기대하고 있지만 8300.00
을 제공합니다. 어떤 시체가 나를 도울 수 있습니까?
당신의 결과는 반올림 당신이 당신의 처분에 겨우 4 소수를 가지고있다. 사용
set @a = round(24900*0.3333333333, 4, 1)
결과는 반올림되지 않고 잘립니다.
0.12346
과 같은 값이 0.1234
으로 잘리고 0.1235
으로 반올림되지 않기 때문에 원하는지 알 수 없습니다.
는이 같은이 또는 뭔가를 할 수 있습니다 :
declare @a NUMERIC(20,6)
set @a=cast(24900 as numeric(20,6))*cast(0.3333333333 as numeric(20,10))
select @a
20,6 개가 작동합니다. – user2107843
이것은이 특별한 경우에 작동하지만 여전히 특정 문제가 발생할 수 있습니다. 아래에 제안 된 'ROUND' 솔루션이 더 나은 옵션입니다. – Andrew
앤드류 (Andrew)의 요지가 적다. –
8299.9999991700
로 평가 식 24900*0.3333333333
다음의 결과가 자동으로 단지 4 소수 (NUMERIC(20,4)
)로 규모로 반올림하기 때문에 (
declare @a NUMERIC(20,4)
set @a=24900*0.3333333333
select @a AS [@a],
24900*0.3333333333 AS [result #1],
ROUND(24900*0.3333333333, 4) AS [result #2],
ROUND(24900*0.3333333333, 4, 1) AS [result #3]
/*
@a result #1 result #2-round result #3-trunc
--------- --------------- --------------- ---------------
8300.0000 8299.9999991700 8300.0000000000 8299.9999000000
*/
용액을 ROUND(exp, 4, 1)
를 사용하여 4 개 소수의 결과를 절단하는 결과 # 3 참조).
네, 반올림하지 않고 자르면 잘립니다. 잘 했어. – user2107843