नई डेटाबेस संरचना में जाँचने पर मैंने देखा कि किसी ने फ्लोट से डबल में फ़ील्ड को बदल दिया है। आश्चर्य है कि, मैंने mysql प्रलेखन की जाँच की, लेकिन ईमानदारी से यह नहीं समझा कि अंतर क्या है।
क्या कोई समझा सकता है?
नई डेटाबेस संरचना में जाँचने पर मैंने देखा कि किसी ने फ्लोट से डबल में फ़ील्ड को बदल दिया है। आश्चर्य है कि, मैंने mysql प्रलेखन की जाँच की, लेकिन ईमानदारी से यह नहीं समझा कि अंतर क्या है।
क्या कोई समझा सकता है?
जवाबों:
वे दोनों फ्लोटिंग पॉइंट नंबरों का प्रतिनिधित्व करते हैं। A FLOAT
एकल-परिशुद्धता के लिए है, जबकि DOUBLE
डबल-सटीक संख्याओं के लिए है।
MySQL एकल-सटीक मानों के लिए चार बाइट्स और डबल-परिशुद्धता मानों के लिए आठ बाइट्स का उपयोग करता है।
फ़्लोटिंग पॉइंट नंबरों और दशमलव (न्यूमेरिक) नंबरों से एक बड़ा अंतर है, जिसका उपयोग आप DECIMAL
डेटा प्रकार के साथ कर सकते हैं । इसका उपयोग फ्लोटिंग पॉइंट नंबरों के विपरीत सटीक संख्यात्मक डेटा मानों को संग्रहीत करने के लिए किया जाता है, जहां मौद्रिक डेटा के साथ सटीक सटीकता को संरक्षित करना महत्वपूर्ण है।
शायद यह उदाहरण समझा सकता है।
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 |
+--------------------+---------+
float(10, 2)
डबल्स केवल फ्लोट्स की तरह होते हैं, केवल इस तथ्य को छोड़कर कि वे दो बार बड़े होते हैं। यह अधिक सटीकता की अनुमति देता है।
सोचा मैं अपने खुद के उदाहरण है कि मदद की मुझे मान का उपयोग कर अंतर देखना जोड़ना होगा 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 आठ स्थानों तक सटीकता के साथ फ्लोटिंग पॉइंट संख्याओं को संग्रहीत करता है और इसमें चार बाइट्स होते हैं जबकि DOUBLE 18 स्थानों तक सटीकता के साथ फ़्लोटिंग पॉइंट संख्याओं को संग्रहीत करता है और इसमें आठ बाइट्स होते हैं।