새 데이터베이스 구조를 확인해 보니 누군가가 float에서 double로 필드를 변경 한 것을 보았습니다. 궁금한 점은, mysql 문서를 확인했지만 솔직히 차이점을 이해하지 못했습니다.MySQL : float과 double의 차이점은 무엇입니까?
누군가 설명 할 수 있습니까?
새 데이터베이스 구조를 확인해 보니 누군가가 float에서 double로 필드를 변경 한 것을 보았습니다. 궁금한 점은, mysql 문서를 확인했지만 솔직히 차이점을 이해하지 못했습니다.MySQL : float과 double의 차이점은 무엇입니까?
누군가 설명 할 수 있습니까?
둘 다 부동 소수점을 나타냅니다. A FLOAT
은 단 정밀도 용이고 DOUBLE
은 배정도 수 용입니다.
MySQL은 단 정밀도 값에는 4 바이트를 사용하고 배정도 값에는 8 바이트를 사용합니다.
DECIMAL
데이터 형식과 함께 사용할 수있는 부동 소수점 숫자 및 십진수 (숫자)와는 큰 차이가 있습니다. 부동 소수점 수와 달리 정확한 숫자 데이터 값을 저장하는 데 사용됩니다. 예를 들어 화폐 데이터와 같은 정확한 정밀도를 유지하는 것이 중요합니다.
두 배는 두 배 큰 사실을 제외하고는 수레와 같습니다. 이것은 더 큰 정확도를 허용합니다.
수 요와 복식은 어느 시점 이후에 반올림됨에 유의하십시오. 예를 들어, 100000.1은 100000을 float로 자릅니다. – Blake
FLOAT는 부동 소수점 수를 최대 8 개까지 저장하고 4 바이트를 저장하지만 DOUBLE은 부동 소수점 수를 최대 18 자리까지 저장하며 8 바이트를 저장합니다.
아마도이 예가 설명 할 수 있습니다.
INSERT INTO `test` values (1.2,1.2,1.2,1.2);
표를 첫째 차이
+-------+-------------+
| Field | Type |
+-------+-------------+
| fla | float |
| flb | float |
| dba | double(10,2)|
| dbb | double(10,2)|
+-------+-------------+
, 우리는 각 필드에 '1.2'에 레코드를 삽입하려고 :
CREATE TABLE `test`(`fla` FLOAT,`flb` FLOAT,`dba` DOUBLE(10,2),`dbb` DOUBLE(10,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 |
+--------------------+---------+
아마도 fla와 flb에 소수점 2 개를 더 잘 비교했을 것입니다. 'float (10, 2)' – Grateful
플로트 8 곳 정확도와 32 비트 (4 바이트)가 있습니다. 은 16 비트 정확도의 64 비트 (8 바이트)입니다. 당신이 더 정확성을 필요로하는 경우
, 더블 대신 의 플로트를 사용합니다.
생각 나는 날, decimal
및 double
을 추가하거나 다른 float
와 곱하면 차이가 값 1.3
를 사용하여 참조 도움이 내 자신의 예를 추가 할 것입니다.
|float | double | decimal |
+-------------------+------------+-----+
|2.5999999046325684 | 2.6 | 2.60000 |
1.3
플로트 다른 유형의 1.3
곱한 :
1.3
플로트는 다른 유형의 1.3
에 추가 이것은 MySQL의 6.7을 사용하고
| float | double | decimal |
+--------------------+--------------------+--------------+
| 1.6899998760223411 | 1.6900000000000002 | 1.6900000000 |
검색어 :
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
);
참고 [ "MySQL의 모든 계산은 이중 정밀도로 수행되기 때문에 FLOAT를 사용하여 몇 가지 예상치 못한 문제를 줄 수도"] (http://dev.mysql.com /doc/refman/5.0/en/numeric-type-overview.html) –
당신이이 링크를 의미하는 것 같아요 : http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html – arun
더 도움이 될 수 있습니다. http://stackoverflow.com/questions/5150274/difference-between-float-and-decimal-data-type –