MySQL: 플로트와 더블의 차이점은 무엇입니까?
새로운 데이터베이스 구조를 확인해보니 누군가 필드를 플로트에서 더블로 변경했습니다.왜 그런지 궁금해서 mysql 서류를 확인했는데 솔직히 뭐가 다른지 모르겠어요.
누가 설명 좀 해줄래?
둘 다 부동 소수점 숫자를 나타냅니다.aFLOAT
싱글 슬립용이지만,DOUBLE
두 자리 숫자용입니다.
MySQL은 단일 정밀도 값에는 4바이트, 이중 정밀도 값에는 8바이트를 사용합니다.
부동소수점수나 10진수(숫자)와는 큰 차이가 있습니다.이러한 숫자는, 다음의 명령어와 함께 사용할 수 있습니다.DECIMAL
data type 입니다.이것은 통화 데이터와 같이 정확한 정밀도를 유지하는 것이 중요한 부동 소수점 숫자와 달리 정확한 숫자 데이터 값을 저장하는 데 사용됩니다.
아마도 이 예가 설명할 수 있을 것이다.
CREATE TABLE `test`(`fla` FLOAT,`flb` FLOAT,`dba` DOUBLE(10,2),`dbb` DOUBLE(10,2));
다음과 같은 테이블이 있습니다.
+-------+-------------+
| Field | Type |
+-------+-------------+
| fla | float |
| flb | float |
| dba | double(10,2)|
| dbb | double(10,2)|
+-------+-------------+
첫 번째 차이를 위해 각 필드에 '1.2'가 있는 레코드를 삽입하려고 합니다.
INSERT INTO `test` values (1.2,1.2,1.2,1.2);
표는 다음과 같습니다.
SELECT * FROM `test`;
+------+------+------+------+
| fla | flb | dba | dbb |
+------+------+------+------+
| 1.2 | 1.2 | 1.20 | 1.20 |
+------+------+------+------+
차이를 알 수 있을까요?
다음으로 예를 제시하겠습니다.
SELECT fla+flb, dba+dbb FROM `test`;
호라! 우리는 다음과 같은 차이를 찾을 수 있다.
+--------------------+---------+
| fla+flb | dba+dbb |
+--------------------+---------+
| 2.4000000953674316 | 2.40 |
+--------------------+---------+
더블은 두 배나 크다는 점을 제외하면 물에 뜨는 것과 같다.따라서 정확도가 향상됩니다.
가치를 사용하여 차이를 알 수 있는 나만의 사례를 추가하려고 합니다.1.3
다른 것과 더하거나 곱할 때float
,decimal
,그리고.double
.
1.3
추가되는 플로트1.3
다른 타입:
|float | double | decimal |
+-------------------+------------+-----+
|2.5999999046325684 | 2.6 | 2.60000 |
1.3
곱한 부동1.3
다른 타입:
| float | double | decimal |
+--------------------+--------------------+--------------+
| 1.6899998760223411 | 1.6900000000000002 | 1.6900000000 |
MySQL 6.7을 사용하고 있습니다.
쿼리:
SELECT
float_1 + float_2 as 'float add',
double_1 + double_2 as 'double add',
decimal_1 + decimal_2 as 'decimal add',
float_1 * float_2 as 'float multiply',
double_1 * double_2 as 'double multiply',
decimal_1 * decimal_2 as 'decimal multiply'
FROM numerics
테이블 생성 및 데이터 삽입:
CREATE TABLE `numerics` (
`float_1` float DEFAULT NULL,
`float_2` float DEFAULT NULL,
`double_1` double DEFAULT NULL,
`double_2` double DEFAULT NULL,
`decimal_1` decimal(10,5) DEFAULT NULL,
`decimal_2` decimal(10,5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `_numerics`
(
`float_1`,
`float_2`,
`double_1`,
`double_2`,
`decimal_1`,
`decimal_2`
)
VALUES
(
1.3,
1.3,
1.3,
1.3,
1.30000,
1.30000
);
Float에는 32비트(4바이트)의 정확도가 8자리입니다.Double에는 64비트(8바이트)의 정확도가 16자리입니다.
더 나은 정확도가 필요한 경우 Float 대신 Double을 사용하십시오.
FLOAT는 부동소수점 번호를 최대 8자리까지 정확하게 저장하며 4바이트를 가집니다.DOUBLE은 최대 18자리까지 정확하게 부동소수점 번호를 저장하며 8바이트를 가집니다.
언급URL : https://stackoverflow.com/questions/2160810/mysql-whats-the-difference-between-float-and-double
'programing' 카테고리의 다른 글
MySQL: GROUP_CONCAT(왼쪽 결합 포함) (0) | 2022.09.21 |
---|---|
두 날짜 사이의 데이터 프레임 행 선택 (0) | 2022.09.21 |
jQuery를 사용하여 부트스트랩 모달 창을 여는 방법 (0) | 2022.09.21 |
코드 시그니터 - 입력 파일이 지정되지 않았습니다. (0) | 2022.09.21 |
같은 테이블에 여러 명이 끼지 않도록 하려면 어떻게 해야 할까요? (0) | 2022.09.21 |