IT

두 정수 값을 나누어 플로트 결과를 얻는 방법은 무엇입니까?

lottoking 2020. 6. 8. 08:05
반응형

두 정수 값을 나누어 플로트 결과를 얻는 방법은 무엇입니까?


다음과 같이 두 정수 사이의 나누기를 할 때 소수 자릿수를 지정하고 싶습니다.

select 1/3

현재를 반환합니다 0. 나는 그것을 반환하고 싶습니다 0,33.

다음과 같은 것 :

select round(1/3, -2)

그러나 그것은 작동하지 않습니다. 원하는 결과를 얻으려면 어떻게해야합니까?


상수를 찾고 있다면 stb와 xiowl의 제안이 좋습니다. 정수인 기존 필드 또는 매개 변수를 사용해야하는 경우 먼저 부동 소수점으로 캐스트 할 수 있습니다.

SELECT CAST(1 AS float) / CAST(3 AS float)

또는

SELECT CAST(MyIntField1 AS float) / CAST(MyIntField2 AS float)

SQL Server는 정수 나누기를 수행하기 때문입니다. 이 시도:

select 1 * 1.0 / 3

이것은 정수를 매개 변수로 전달할 때 유용합니다.

select x * 1.0 / y

둘 다 캐스팅 할 필요는 없습니다. 디비전의 결과 데이터 유형은 항상 데이터 유형 우선 순위 가 높은 유형 입니다. 따라서 솔루션은 다음과 같아야합니다.

SELECT CAST(1 AS float) / 3

또는

SELECT 1 / CAST(3 AS float)

사용하다

select 1/3.0

이것은 일을 할 것입니다.


조금 늦을 수도 있지만 MySQL에서 CASTing FLOAT이 허용되지 않으며 MySQL dev에CAST(1 AS float) 명시된대로 시도하면 오류가 발생합니다 .

이에 대한 해결 방법은 간단합니다. 그냥 해

(1 + 0.0)

그런 다음 ROUND과 같은 특정 소수점 이하 자릿수를 달성하는 데 사용하십시오.

ROUND((1+0.0)/(2+0.0), 3)

위의 SQL은 1을 2로 나누고 부동 소수점을 소수점 3 자리로 반환합니다 0.500.

한 캔 CAST: 다음과 같은 유형의 진수, 문자, 날짜, 날짜, 소수, JSON, NCHAR, 서명, 시간, 그리고 부호 .


이 트릭은 SQL Server에서 작동하고 더 짧습니다 (이전 답변을 기반으로 함)

SELECT 1.0*MyInt1/MyInt2

또는:

SELECT (1.0*MyInt1)/MyInt2

이것을 사용하십시오

select cast((1*1.00)/3 AS DECIMAL(16,2)) as Result

여기이 SQL에서 먼저 float로 변환하거나 1.00을 곱하십시오. 출력은 float 숫자입니다. 여기서 소수점 이하 두 자리를 고려하십시오. 필요한 것을 선택할 수 있습니다.


integer value에 대한 솔루션을 찾기 위해 (나와 같이) 여기에왔다면 답은 다음과 같습니다.

CAST(9/2 AS UNSIGNED)

5를 반환

참고 URL : https://stackoverflow.com/questions/11719044/how-to-get-a-float-result-by-dividing-two-integer-values

반응형