2013-06-05 2 views
1

아래 데이터가있는 표가 있습니다. 열 값을 사용하여 백분율을 계산하십시오.

enter image description here

내가 할 필요

피해의 계산 10 %는 내가 아래 수행 한 쿼리입니다 :

SELECT damage = (damage * 10) /100 
     ,[Peril_Code] 
     FROM [LocExposure].[dbo].[myTable] 

이는 아래의 결과를 반환 :

enter image description here

[Damage] 열은 부동입니다.

잘못된 계산을 반환하는 이유를 알 수 없습니다.

+1

을 통해 갈 수있다 출력이 올바르지 않습니까? –

+1

예를 들어 내가 기대했던 두 번째 레코드를 보면 0.0000125444785042888이 아니라 1.25444785042888E-05 이건 그냥 형식 문제 일 뿐이라는 것입니다. –

+0

그냥 포맷팅 문제 (과학 표기법)라고 알았습니다. 정확도에 대한 최대 숫자를 사용하여 십진수로 resul 캐스팅 쿼리를 수정하고 지금은 좋아 보인다 : 변환 (10 진수 (30,18), 손상된 * 10/100) –

답변

3

출력 결과가 정확합니다. 오류 없음. 실제 값이 2.44E-05 인 결과 2.44E-06을 확인하십시오.

따라서 오류는 없습니다.

UPDATE :

과학적 표기법을 피하기 위해, 당신은 어떤 방법이 생각에 다음 포스트

convert float into varchar in SQL server without scientific notation

+0

내가 기대했던 두 번째 레코드를 봐 10 % 0.000125444785042888 '의 값은 1.25444785042888E-05 –

+0

'0.000125444785042888 '이'1.25444785042888E-04'이므로 '0.000125444785042888'의 '10 %'는 '1.25444785042888E-05'로 맞습니다. 어떤 오류도 보이지 않습니다. – sarwar026

+0

은 아마도 형식 문제 일 것입니다. 나는 모두 E-04, E-05 등으로 나타나기를 바란다. –

1
DECLARE @Damage TABLE 
(
     Damage  FLOAT, 
     PerilCode CHAR(1) 
) 
INSERT INTO @Damage VALUES 
     (2.44253351044103E-05 , 'T'), 
     (0.000125444785042888 , 'T'), 
     (0.00015258112714104 , 'T'), 
     (0.000238995871781784 , 'T'), 
     (0.000267978447740977 , 'T') 

SELECT Damage, Damage * 0.1 [10%], PerilCode 
FROM @Damage 

출력

Damage     10%     PerilCode 
--------------------------------------------------------- 
2,44253351044103E-05 2,44253351044103E-06 T 
0,000125444785042888 1,25444785042888E-05 T 
0,00015258112714104  1,5258112714104E-05  T 
0,000238995871781784 2,38995871781784E-05 T 
0,000267978447740977 2,67978447740977E-05 T 
관련 문제