Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 10진수 필드가 반올림되는 것을 어떻게 중지합니까?

<시간/>

DECIMAL() 함수를 사용하여 소수점 필드 반올림을 중지할 수 있습니다. 다음은 반올림된 소수 필드의 데모입니다. 이 예에서는 먼저 데모 테이블을 생성하겠습니다.

mysql> create table stopRoundingDemo
   -> (
   -> Amount DECIMAL(7)
   -> );
Query OK, 0 rows affected (0.67 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into stopRoundingDemo values(7836.783);
Query OK, 1 row affected, 1 warning (0.43 sec)
mysql> insert into stopRoundingDemo values(1737.67);
Query OK, 1 row affected, 1 warning (0.23 sec)
mysql> insert into stopRoundingDemo values(110.50);
Query OK, 1 row affected, 1 warning (0.33 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from stopRoundingDemo;

다음은 출력입니다.

+--------+
| Amount |
+--------+
| 7837   |
| 1738   |
| 111    |
+--------+
3 rows in set (0.08 sec)

위의 샘플 출력에서 ​​소수점은 반올림됩니다.

이제 소수가 반올림되지 않도록 하는 방법을 살펴보겠습니다. 이를 위해 먼저 새 테이블을 만들고 반올림 없이 결과를 제공하는 방식으로 DECIMAL 유형을 설정하겠습니다.

mysql> create table stopRoundingDemo2
   -> (
   -> Amount DECIMAL(10,4)
   -> );
Query OK, 0 rows affected (0.81 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -

mysql> insert into stopRoundingDemo2 values(7836.783);
Query OK, 1 row affected (0.14 sec)
mysql> insert into stopRoundingDemo2 values(1737.67);
Query OK, 1 row affected (0.14 sec)
mysql> insert into stopRoundingDemo2 values(110.50);
Query OK, 1 row affected (0.16 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from stopRoundingDemo2;

출력은 다음과 같습니다

+-----------+
| Amount    |
+-----------+
| 7836.7830 |
| 1737.6700 |
| 110.5000  |
+-----------+
3 rows in set (0.00 sec)