Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 나눗셈 연산에서 CAST() 함수로 소수점 정밀도 높이는 방법

MySQL에서 나눗셈을 수행하면 기본적으로 결과의 정밀도가 낮게 표시될 수 있습니다. 이런 경우 CAST() 함수를 사용해 값을 DECIMAL 타입으로 변환하면 원하는 자릿수만큼 정밀한 계산 결과를 얻을 수 있습니다. 아래에서 테이블 생성부터 쿼리 실행까지 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 정수 값을 저장할 테이블을 생성합니다.

mysql> create table DemoTable1823
    (
    Value int
    );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable1823 values(1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1823 values(2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1823 values(3);
Query OK, 1 row affected (0.00 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1823;

실행 결과는 다음과 같습니다.

+-------+
| Value |
+-------+
|     1 |
|     2 |
|     3 |
+-------+
3 rows in set (0.00 sec)

4. CAST()로 나눗셈 정밀도 높이기

핵심은 Value 컬럼을 DECIMAL(30, 20)으로 변환한 뒤 나눗셈을 수행하는 것입니다. 여기서 DECIMAL(30, 20)은 전체 30자리 중 소수점 이하 20자리까지 표현하겠다는 의미입니다.

mysql> select cast(Value AS DECIMAL(30, 20)) / 3 as Result from DemoTable1823;

실행 결과는 다음과 같습니다.

+----------------------------+
| Result                     |
+----------------------------+
| 0.333333333333333333333333 |
| 0.666666666666666666666667 |
| 1.000000000000000000000000 |
+----------------------------+
3 rows in set (0.00 sec)

위 결과를 보면 1÷3, 2÷3과 같이 나누어떨어지지 않는 연산도 소수점 이하 20자리까지 정확하게 계산된 것을 확인할 수 있습니다. 만약 더 높거나 낮은 정밀도가 필요하다면 DECIMAL(M, D)에서 D 값(소수점 이하 자릿수)을 조정하면 됩니다. 참고로 M의 최대값은 65, D의 최대값은 30입니다.