নতুন ডাটাবেস কাঠামোটি পরীক্ষা করে দেখলাম যে কেউ ফ্ল্যাট থেকে দ্বিগুণ হয়ে গেছে changed ভাবছি কেন, আমি মাইএসকিএল ডকুমেন্টেশন চেক করেছিলাম, তবে সততার সাথে পার্থক্য কী তা বুঝতে পারিনি।
কেউ কি ব্যাখ্যা করতে পারেন?
নতুন ডাটাবেস কাঠামোটি পরীক্ষা করে দেখলাম যে কেউ ফ্ল্যাট থেকে দ্বিগুণ হয়ে গেছে changed ভাবছি কেন, আমি মাইএসকিএল ডকুমেন্টেশন চেক করেছিলাম, তবে সততার সাথে পার্থক্য কী তা বুঝতে পারিনি।
কেউ কি ব্যাখ্যা করতে পারেন?
উত্তর:
তারা উভয়ই ভাসমান পয়েন্ট সংখ্যা উপস্থাপন করে। এ FLOATএকক নির্ভুলতার DOUBLEজন্য এবং অন্যটি দ্বিগুণ নির্ভুলতার সংখ্যার জন্য।
মাইএসকিউএল একক নির্ভুলতার মানগুলির জন্য চারটি বাইট এবং ডাবল-যথার্থ মানের জন্য আট বাইট ব্যবহার করে।
ভাসমান পয়েন্ট সংখ্যা এবং দশমিক (সংখ্যাসূচক) সংখ্যাগুলির মধ্যে একটি বড় পার্থক্য রয়েছে, যা আপনি DECIMALডেটা টাইপের সাহায্যে ব্যবহার করতে পারেন । এটি ভাসমান পয়েন্ট সংখ্যাগুলির বিপরীতে সঠিক সংখ্যক ডেটা মান সংরক্ষণ করতে ব্যবহৃত হয়, যেখানে সঠিক নির্ভুলতা সংরক্ষণ করা গুরুত্বপূর্ণ, উদাহরণস্বরূপ আর্থিক তথ্য সহ et
সম্ভবত এই উদাহরণটি ব্যাখ্যা করতে পারে।
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`;
Hola! আমরা এই মত পার্থক্য খুঁজে পেতে পারি:
+--------------------+---------+
| fla+flb | dba+dbb |
+--------------------+---------+
| 2.4000000953674316 | 2.40 |
+--------------------+---------+
float(10, 2)
দ্বিগুণ হ'ল ভাসমানের মতো, এগুলি বাদে তারা দ্বিগুণ হয়ে থাকে। এটি বৃহত্তর নির্ভুলতার জন্য অনুমতি দেয়।
চিন্তাধারা আমি আমার নিজের উদাহরণ সাহায্য করেছে আমাকে মান ব্যবহার পার্থক্য দেখতে যোগ চাই 1.3যখন যোগ করে অথবা অন্যের সঙ্গে গুন float, decimalএবং double।
1.31.3বিভিন্ন ধরণের যুক্ত করুন ভাসা :
|float | double | decimal |
+-------------------+------------+-----+
|2.5999999046325684 | 2.6 | 2.60000 |
1.31.3বিভিন্ন ধরণের দ্বারা ভাসা ভাসা :
| float | double | decimal |
+--------------------+--------------------+--------------+
| 1.6899998760223411 | 1.6900000000000002 | 1.6900000000 |
এটি মাইএসকিউএল 6.7 ব্যবহার করছে using
প্রশ্ন:
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
);
ফ্লোট আটটি স্থানের যথার্থতার সাথে ভাসমান পয়েন্ট সংখ্যা সঞ্চয় করে এবং চারটি বাইট রয়েছে যখন ডাবল 18 টি পর্যন্ত যথাযথতা সহ ভাসমান পয়েন্ট সংখ্যা সঞ্চয় করে এবং আটটি বাইট রয়েছে।
8 টি স্থানের নির্ভুলতার সাথে ফ্লোটের 32 বিট (4 বাইট) রয়েছে। ডাবল এর 16 বিট (8 বাইট) 16 স্থানের নির্ভুলতা সহ রয়েছে।
আপনার যদি আরও ভাল নির্ভুলতার প্রয়োজন হয় তবে ফ্লোটের পরিবর্তে ডাবল ব্যবহার করুন ।