- 1 1. Introduction
- 2 2. What Is the FLOAT Data Type?
- 3 3. Precision and Range of the FLOAT Data Type
- 4 4. FLOAT දත්ත වර්ගයේ ව්යවස්ථාව සහ භාවිතය
- 5 5. FLOAT දත්ත වර්ගයේ වාසි සහ අවාසි
- 6 6. FLOAT සහ අනෙකුත් සංඛ්යාත්මක වර්ගයන් අතර සසඳුම
- 7 7. FLOAT සඳහා ප්රායෝගික භාවිතා නඩු සහ හොඳම ක්රියාමාර්ග
- 8 8. පොදු වැරදි අවබෝධයන් සහ ගැටළු විසඳීම
- 9 9. Conclusion
- 10 Frequently Asked Questions (FAQ)
- 10.1 Q1. What is the difference between FLOAT and DOUBLE?
- 10.2 Q2. What do M and D mean in FLOAT(M,D)?
- 10.3 Q3. Can I use FLOAT for monetary values?
- 10.4 Q4. FLOAT අගයක් සමානතා සංසන්දනයක (=) හි ගැලපෙන්නේ ඇයි නැද්ද?
- 10.5 Q5. FLOAT භාවිතා කිරීමේදී වටාරුණු දෝෂ අවම කිරීමට ක්රමයක් තිබේද?
- 10.6 Q6. MySQL FLOAT දත්ත වර්ගය සපයන්නේ ඇයි?
1. Introduction
දත්ත ගබඩාවක නිවැරදි සංඛ්යාත්මක දත්ත වර්ගය තෝරා ගැනීම ඔබ සිතන තරම් වැදගත්ය
MySQL ලෝකයේ අතිශය ජනප්රිය විවෘත-මූලාශ්ර දත්ත ගබඩා කළමනාකරණ පද්ධති අතරින් එකකි. එය වෙබ් යෙදුම් පසුබැසීම් සහ WordPress වැනි CMS වේදිකා සඳහා මූලික පදනමක් වන අතර, සංවර්ධකයින්ට අත්යවශ්ය මෙවලමක් වේ.
එහි බොහෝ විශේෂාංග අතර, “සංඛ්යාත්මක අගයන් ගබඩා කිරීම සඳහා කුමන දත්ත වර්ගය භාවිතා කළ යුතුද” යන තීරණය කාර්ය සාධනය සහ නිරවද්යතාවය සෘජුවම බලපාන ඉතා වැදගත් තීරණයකි. පූර්ණ සංඛ්යා (INT, BIGINT, ආදිය)之外, දශම අගයන් සමඟ වැඩ කරන විට ඔබට තෙල්-බින්දු වර්ග (FLOAT, DOUBLE) හෝ ස්ථාවර-බින්දු වර්ග (DECIMAL) අතරින් තේරීමට හැකියාව ඇත.
මෙම ලිපියේ, අපි විශේෂයෙන් FLOAT දත්ත වර්ගය මත අවධානය යොමු කර, එය විස්තරාත්මකව පරීක්ෂා කරමු.
MySQL FLOAT දත්ත වර්ගය කුමක්ද?
ඔබ “mysql float” යන වචනය සොයා බැලුවේ නම්, පහත පරිදි ප්රශ්න ඇති විය හැකියි:
- FLOAT දත්ත වර්ගය යනු කුමක්ද?
- FLOAT, DOUBLE, සහ DECIMAL අතර වෙනස්කම් මොනවාද?
- නිරවද්යතාව ගැටළු තිබේද?
- මුදල්, බර, හෝ ප්රතිශත සඳහා FLOAT භාවිතා කිරීම ආරක්ෂිතද?
මෙම ප්රශ්නවලට පිළිතුරු සැපයීමට, මෙම ලිපිය FLOAT වර්ගයේ මූලික කරුණු සිට උසස් භාවිතය, වැදගත් අවවාද, අනෙකුත් සංඛ්යාත්මක වර්ග සමඟ සංසන්දනය, සහ ප්රායෝගික නිර්දේශයන් දක්වා සියල්ල ආවරණය කරයි.
වැදගත් දැනුම ලබා ගනිමින් වැදගත් වැරදි වලින් වැළැක්වීම
FLOAT වර්ගය එහි ගුණාංග සම්පූර්ණයෙන් නොදැනගෙන භාවිතා කිරීමෙන් දත්ත අසමතුලිතතා සහ ගණනයේ දෝෂයන් සිදුවිය හැකිය. එසේ නොව, නිසි ලෙස භාවිතා කරන විට, එය MySQL හි සංඛ්යාත්මක දත්ත හසුරවීමට බලවත් හා කාර්යක්ෂම ක්රමයක් වේ.
ඔබ “mysql float” යන යතුරු පදය සොයමින් පර්යේෂණය කරන්නේ නම්, මෙම ලිපිය ඔබට FLOAT දත්ත වර්ගය නිවැරදිව භාවිතා කිරීමට අවශ්ය විශ්වාසය ලබා දීමට, කියවීම අවසන් වන විට පූර්ණයෙන්ම උදව් කරයි. අවසානය දක්වා කියවීමට අමතක නොකරන්න.
2. What Is the FLOAT Data Type?
MySQL හි FLOAT ගැන මූලික සාරාංශය
MySQL හි FLOAT දත්ත වර්ගය දශම සංඛ්යා ගබඩා කිරීම සඳහා භාවිතා කරන තෙල්-බින්දු සංඛ්යාත්මක වර්ගයකි. එය භාගික කොටස් ඇතුළත් අගයන් හසුරවීමට නිර්මාණය කර ඇති අතර, අනුමාන සංඛ්යාත්මක නිරූපණයක් ලබා දෙයි.
නම පෙන්වන පරිදි, තෙල්-බින්දු සංඛ්යා වල ස්ථාවර දශම ස්ථානයක් නොමැත. මෙය ඉතා විශාල සංඛ්යා සිට අති සුළු සංඛ්යා දක්වා පුළුල් පරාසයක් සවිස්තරාත්මකව නිරූපණය කිරීමට ඉඩ සලසයි. FLOAT විද්යාත්මක ගණනයන් හෝ සංවේදක දත්ත වැනි, කුඩා වටාපිටිය වෙනස්කම් පිළිගත හැකි අවස්ථා සඳහා විශේෂයෙන් ප්රයෝජනවත් වේ.
CREATE TABLE sample (
value FLOAT
);
මෙම නිර්වචනය සමඟ, තීරුව තෙල්-බින්දු සංඛ්යාත්මක අගයන් ගබඩා කළ හැකිය.
FLOAT හි ගබඩා ප්රමාණය සහ නිරවද්යතාවය
FLOAT දත්ත වර්ගය එක-නිරවද්ය තෙල්-බින්දු වර්ගයකි. එය සుమාරූපයෙන් අංක 7 ක් පමණ නිරවද්ය අංක ලබා දෙයි. මෙම නිරවද්යතාවය ඉක්මවා යන අගයන් අභ්යන්තරයෙන් වටකුරු කරනු ලැබේ.
මෙම හැසිරීම IEEE 754 ප්රමිතියට අනුකූල වේ. FLOAT නිරවද්ය මූල්ය ගණනයන් හෝ නිරවද්ය සංඛ්යාත්මක එකතුව සඳහා සුදුසු නොවූවත්, දත්ත විශාල ප්රමාණයක් ඉක්මනින් හා අඩු මතක භාවිතයෙන් සැකසීමට අවශ්ය වන අවස්ථා සඳහා ඉතා ප්රයෝජනවත් වේ.
FLOAT හි වාක්ය රචනය සහ භාවිතය
MySQL හි, FLOAT FLOAT(M,D) ආකාරයෙන් නිර්වචනය කළ හැකිය. මෙහි පරාමිතීන් පහත පරිදි අර්ථ දක්වයි:
M: මුළු අංක ගණන (පූර්ණ සංඛ්යා කොටස + භාගික කොටස)D: දශම ලක්ෂ්යය පසු අංක ගණන
උදාහරණයක් ලෙස:
CREATE TABLE prices (
price FLOAT(7,4)
);
මෙම අවස්ථාවේ, price තීරුව මුළු 7 අංක ගණනක්, ඒ අතර 4 අංක භාගික කොටසට වෙන් කර ඇත. එමනිසා ප්රායෝගික පරාසය -99999.99 සිට 99999.99 දක්වා වේ.
වැදගත්: ඔබ FLOAT(M,D) ලෙස නියම කළත්, MySQL අභ්යන්තරයෙන් තෙල්-බින්දු ගණිතය සිදු කරයි. එනිසා නිරවද්යතාවය සම්පූර්ණයෙන් සහතික නොවේ. නියම කළ දශම පරාසය දැක්ම සඳහා මාර්ගෝපදේශයක් ලෙස සලකා බලන්න, නිරවද්යතාවය සඳහා නොව.
3. Precision and Range of the FLOAT Data Type
Significant Digits and the Relationship to Error
MySQL හි FLOAT වර්ගය IEEE 754 එක-ප්රමාණිත තෙරපුම්-බින්දු සංඛ්යා ලෙස ක්රියාත්මක වේ. මෙය අර්ථය වන්නේ එය ආසන්නව 7 වැදගත් අංක නිරවද්යතාවයක් ලබා දේ. වෙනත් වචනයෙන්, 7 අංක ඉක්මවන අගයන් වටා ගත හැක.
උදාහරණයක් ලෙස, ඔබ පහත අගය සුරකින්නේ නම්:
INSERT INTO sample (value) VALUES (1234567.89);
පළමු නරඹන විට, මෙය හොඳින් පෙනේ. නමුත්, FLOAT හි නිරවද්යතා සීමාව නිසා, එය ඉතා සුළු වෙනස් අගයක් ලෙස සුරැකිය හැක. මෙය වටා ගැනීමේ දෝෂයක් ලෙස හැඳින්වේ, සහ එය තෙරපුම්-බින්දු වර්ගවල ස්වභාවික ලක්ෂණයකි.
සැබෑ-ලෝක උදාහරණයක්: දෝෂ කෙසේ සිදුවේද
පහත සසඳුම සලකා බලන්න:
SELECT value = 0.1 FROM sample WHERE id = 1;
value තීරුවට 0.1 ඇතුළත් කළාමත්, මෙම සසඳුම TRUE ලෙස නැවත නොලැබිය හැක. එය 0.1 බයිනරි ආකාරයෙන් නිරවද්යව ප්රදර්ශනය කළ නොහැකි නිසා, FLOAT තීරුවේ සුරැකීම කුඩා වෙනසක් හඳුන්වා දෙයි.
මෙම කුඩා වෙනස්කම් එකතු වීමෙන්, ඒවා ඔබේ යෙදුමේ එකතු කිරීමේ ප්රතිඵල සහ කොන්දේසි තර්කය මත බලපායි.
FLOAT හි නිරූපණය කළ හැකි සංඛ්යාත්මක පරාසය
FLOAT හි සංඛ්යාත්මක පරාසය ඉතා පුළුල් වේ. MySQL හි නිල ලේඛන අනුව, එය සुमාරූපව ±1.17549 × 10^(-38) සිට ±3.40282 × 10^(38) දක්වා ආවරණය කරයි.
මෙම පරාසය සාමාන්ය වෙබ් යෙදුම් හෝ සංවේදක ලොග් කිරීම සඳහා ප්රමාණවත් වන අතර, නිරවද්යතාවය අත්යවශ්ය වන මූල්ය පද්ධතිවල අවධානයෙන් භාවිතා කළ යුතුය.
“පරාසය”ට වඩා “නිරවද්යතාව” ගැන වැඩි අවධානයක් දිය යුතුය
FLOAT භාවිතා කරන විට, අතිශය වැදගත් කරුණ එහි පුළුල් සංඛ්යාත්මක පරාසය නොව, නිරවද්යතා සීමා වේ. සැබෑ-ලෝක පද්ධතිවල, වැඩි ගැටළුව වන්නේ අගයන් නිරවද්යව සමාන නොවීම වන අතර, එය සුක්ෂ්ම නමුත් බලපෑමක් ඇති දෝෂවලට හේතු විය හැක.
ඒ නිසා, ඔබේ සංඛ්යා විශාල හෝ කුඩා බව පමණක් පදනම් කරගෙන FLOAT තෝරා ගැනීම වෙනුවට, ඔබේ පද්ධතියට ගත හැකි දෝෂ ප්රමාණය මත තෝරා ගත යුතුය.
4. FLOAT දත්ත වර්ගයේ ව්යවස්ථාව සහ භාවිතය
මූලික නිර්වචනය
MySQL හි, FLOAT තීරුවක් නිර්වචනය කිරීමේ මූලික ක්රමය මෙසේය:
CREATE TABLE products (
weight FLOAT
);
මෙම උදාහරණයේ, weight තීරුව තෙරපුම්-බින්දු සංඛ්යා සුරැකිය හැක. ඔබට නිරවද්යතාවය හෝ පරිමාණය නියම කිරීමට අවශ්ය නොවේ නම්, මෙය සාමාන්යයෙන් ප්රමාණවත් වේ.
FLOAT(M,D) හි අර්ථය සහ භාවිතය
ඔබට වැඩි විස්තරාත්මක නිර්වචනයක් අවශ්ය නම්, FLOAT(M,D) ආකෘතිය භාවිතා කළ හැක.
- M යනු මුළු අංක ගණන (පූර්ණ සංඛ්යා කොටස + දශම කොටස)
- D යනු දශම ලක්ෂ්යය පසු අංක ගණන
උදාහරණයක් ලෙස:
CREATE TABLE prices (
price FLOAT(7,4)
);
මෙම අවස්ථාවේ, price තීරුව මුළු 7 අංක (දශම ලක්ෂ්යය පසු 4 අංක) සුරැකිය හැක. ප්රායෝගික පරාසය -99999.99 සිට 99999.99 දක්වා වේ.
වැදගත්: ඔබ FLOAT(M,D) නියම කළත්, MySQL තවමත් අභ්යන්තරව තෙරපුම්-බින්දු ගණිත ක්රියාකාරකම් කරයි. එබැවින්, කඩිනම් නිරවද්යතාවය සහතික නොවේ. නියම කළ පරිමාණය අගයන් ප්රදර්ශනය වන ආකාරයට මාර්ගෝපදේශයක් ලෙස සලකන්න, නිරවද්ය සුරැකුමට වගකීමක් නොව.
UNSIGNED භාවිතය
ඔබට FLOAT තීරුවකට UNSIGNED සංශෝධකය යොදිය හැක. මෙය ඍණ අගයන් වැළැක්වී, 0 හෝ ඊට වැඩි අගයන් පමණක් ඉඩ දේ.
CREATE TABLE ratings (
score FLOAT UNSIGNED
);
මෙම නිර්වචනය සමඟ, score තීරුව ඍණ සංඛ්යා සුරැකීමට නොහැකි වන අතර, දත්ත සමගිත්වය රැක ගැනීමට උපකාරී වේ.
ZEROFILL භාවිතය
ඔබ ZEROFILL නියම කළහොත්, MySQL අවශ්ය පළලට නොලැබෙන විට ප්රදර්ශන අගයට ඉදිරිපස ශුන්ය (0) පිරවීම් කරයි. මෙය M (ප්රදර්ශන පළල) සමඟ භාවිතා කිරීමට අදහස් කරයි.
CREATE TABLE inventory (
amount FLOAT(5,2) ZEROFILL
);
මෙම සැකසුම සමඟ, 3.5 සුරැකීම 003.50 ලෙස ප්රදර්ශනය වේ. නමුත්, මෙය අගය ප්රදර්ශනය වන ආකාරයට පමණක් බලපායි— සැබෑ සුරැකුම් අගය වෙනස් නොවේ.
උදාහරණය: FLOAT අගයන් සමඟ INSERT සහ SELECT
INSERT INTO products (weight) VALUES (12.345);
SELECT weight FROM products;
The stored value will be returned as-is in a SELECT query. However, as discussed earlier, keep in mind that a small visible discrepancy may appear due to floating-point rounding.
5. FLOAT දත්ත වර්ගයේ වාසි සහ අවාසි
FLOAT හි වාසි
Using the FLOAT data type in MySQL offers several practical benefits.
1. කාර්යක්ෂම ගබඩා කිරීම
FLOAT අගයන් බයිට් 4කින් ගබඩා කරයි, එමඟින් ගබඩා කාර්යක්ෂමතාව ලබා දේ, විශාල ප්රමාණයේ දශම අගයන් ගබඩා කළ යුතු දත්ත ගබඩා සඳහා. මෙය විශේෂයෙන් සංවේදක දත්ත, සංඛ්යාත්මක වාර්තා, හෝ අනෙකුත් උච්ච-අවධි දත්ත කට්ටල සඳහා ප්රයෝජනවත් වේ.
2. වේගවත් සැකසුම් වේගය
බහු CPU වලදී floating-point ක්රියාකාරකම් දෘඩාංග මට්ටමේ අනුකූල කර ඇත, එමඟින් ඉතා වේගවත් ගණනය කිරීමේ කාර්ය සාධනය ලැබේ. මෙය වේගය අත්යවශ්ය වන රියල්-ටයිම් පද්ධති සහ දත්ත විශ්ලේෂණ වැඩබාරයන්හි FLOAT වාසිදායක කරයි.
3. පුළුල් සංඛ්යාත්මක පරාසය
FLOAT හි ධාරක (exponent) කොටස භාවිතා කිරීම නිසා, එය අති විශාල පරාසයක අගයන් නිරූපණය කළ හැක. එය ±10^38 පමණ දක්වා සංඛ්යාත්මක අගයන්ට සහය දක්වයි, එමඟින් අභ්යවකාශ-පරිමාණ හෝ අති කුඩා අගයන් හසුරවීමට හැකියාව ලැබේ.
FLOAT හි අවාසි
එසේම, FLOAT හි වැදගත් අඩුපාඩු ඇත. නිරවද්යතාවය අත්යවශ්ය වන අවස්ථා වලදී විශේෂයෙන් සැලකිල්ලෙන් පරීක්ෂා කිරීම අවශ්ය වේ.
1. නිරවද්යතාවය සම්පූර්ණ නොවේ
FLOAT අගයන් ආසන්න නිරූපණ ලෙස ගබඩා කරයි. 0.1 හෝ 0.01 වැනි සරල අගයන් පවා අභ්යන්තරයෙන් බයිනරි බවට පරිවර්තනය වන නිසා කුඩා වටාපිටාව දෝෂ හටගත හැක. මෙම කුඩා අසමතුලිතතා සමහරවිට සසඳුම් හෝ කොන්දේසි ලොජික් වල දෝෂ ඇති කරයි. එබැවින්, භාවිතා අවස්ථාව අනුව නිවැරදි සංඛ්යාත්මක වර්ගය තෝරා ගැනීම අත්යවශ්ය වේ (පහතදී වැඩි විස්තර ඇත).
2. සසඳුම් සඳහා අවධානය අවශ්යයි
උදාහරණයක් ලෙස, පහත SQL ප්රකාශය අපේක්ෂිත ලෙස ක්රියා නොකළ හැක:
SELECT * FROM prices WHERE amount = 0.1;
0.1 ලෙස ගබඩා කරන ලද FLOAT අගයක් අභ්යන්තරයෙන් 0.10000000149011612 වැනි ආකාරයකින් නිරූපණය විය හැක. එම නිසා, = භාවිතා කරමින් සමානත්ව සසඳුම අසාර්ථක විය හැකි අතර අනපේක්ෂිත විමසුම් ප්රතිඵල ලැබේ.
3. උසස් නිරවද්යතාව අවශ්යතා සඳහා සුදුසු නොවේ
මුදල්, ගිණුම්, බදු හෝ බිල්පත් පද්ධතිවල, එක සෙන්ට් කුඩා අසමතුලිතතාවයක් පවා අග්රහණය කළ නොහැක. එවැනි අවස්ථා වල, DECIMAL වැනි ස්ථිර-බින්දු වර්ගයක් දැඩි ලෙස නිර්දේශ කරයි.
6. FLOAT සහ අනෙකුත් සංඛ්යාත්මක වර්ගයන් අතර සසඳුම
සංඛ්යාත්මක වර්ගයක් තෝරා ගැනීම “නිරවද්යතාව සහ අරමුණ” මත පදනම් වේ
MySQL හි, FLOAT තවත් DOUBLE හෝ DECIMAL භාවිතා කර දශම සංඛ්යාත්මක අගයන් හසුරවිය හැක. මෙම තුනම භාගික අගයන්ට සහය දෙන නමුත්, නිවැරදි තේරීම නිරවද්යතාව අවශ්යතා, කාර්ය සාධන අවශ්යතා, සහ අදහස් කරන භාවිතය මත බරපතල ලෙස පදනම් වේ. මෙම කොටස ප්රායෝගික දෘශ්යකෝණයෙන් FLOAT සහ අනෙකුත් ප්රධාන සංඛ්යාත්මක වර්ගයන් අතර සසඳුම කරයි.
FLOAT සහ DOUBLE
| Category | FLOAT | DOUBLE |
|---|---|---|
| Precision | Approx. 7 digits (single precision) | Approx. 15–16 digits (double precision) |
| Storage Size | 4 bytes | 8 bytes |
| Processing Speed | Fast (lightweight) | Slightly slower (precision-focused) |
| Typical Use Cases | Approximate values where strict precision is not required | Scientific calculations requiring higher precision |
DOUBLE, FLOAT සඳහා උසස්-නිරවද්යතාව විකල්පයක් ලෙස සැලකිය හැක. එය පුළුල් සංඛ්යාත්මක පරාසය තවමත් රැකගෙන වැඩි නිරවද්යතාව ලබා දේ. උදාහරණයක් ලෙස, අභ්යවකාශ ගණනයන් හෝ උසස්-නිරවද්යතාව නො-මුදල් සංඛ්යාත්මක සැකසුම් DOUBLE සඳහා සුදුසු වේ. එහෙත්, එය වැඩි ගබඩා සහ සැකසුම් සම්පත් භාවිතා කරන බැවින්, එය සුදුසු ලෙස තෝරා ගන්න.

FLOAT සහ DECIMAL
| Category | FLOAT | DECIMAL |
|---|---|---|
| Precision | Approximate (rounding errors possible) | Exact fixed-point representation |
| Storage Size | 4 bytes (variable internal handling) | Depends on M and D (generally larger) |
| Main Use Cases | Data where approximation is acceptable | Money, billing, taxes, precise statistics |
| Rounding Errors | Possible (floating-point error) | None (exact decimal arithmetic) |
DECIMAL, දශම-10 නිරවද්ය නිරූපණ භාවිතා කරයි, එමඟින් මුදල් අගයන්, ගනුදෙනු ප්රමාණ, සහ බදු අනුපාත වැනි නිරවද්යතාව අත්යවශ්ය වන අවස්ථා සඳහා නිර්දේශිත තේරීම වේ. එයට විරුද්ධව, FLOAT කාර්ය සාධනය සහ ආසන්න ගණනයන්ට ප්රමුඛත්වය දක්වයි. මෙම දෙකම මූලිකව වෙනස් අරමුණු සපුරාලයි.
නිවැරදි සංඛ්යාත්මක වර්ගය තෝරා ගැනීමේ ක්රමය
පහත මාර්ගෝපදේශ අනුගමනය කරන්න:
- ✅ FLOAT : සංවේදක කියවීම්, මිනුම් දත්ත, සංඛ්යාත්මක සැකසුම් — කුඩා වටාපිටාව වෙනස්කම් පිළිගත හැකි අවස්ථා.
- ✅ DOUBLE : උසස් නිරවද්යතාව අවශ්ය වන අවස්ථා (උදාහරණයක් ලෙස, විද්යාත්මක ගණනයන් හෝ විශ්ලේෂණ වැඩබාර).
- ✅ DECIMAL : දෝෂ අග්රහණය කළ නොහැකි මුදල් සහ බිල්පත් ගණනයන්.
Choosing the wrong type can allow small errors to accumulate into serious calculation mistakes. In high-precision systems, it is often wise to adopt the mindset that “FLOAT should generally be avoided” unless approximation is explicitly acceptable.
7. FLOAT සඳහා ප්රායෝගික භාවිතා නඩු සහ හොඳම ක්රියාමාර්ග
FLOAT සඳහා සැබෑ-ලෝක භාවිතා නඩු
The MySQL FLOAT data type is widely used in scenarios where performance is more important than absolute precision. Below are representative examples.
1. සංවේදක දත්ත ලේඛනය (IoT සහ නිරීක්ෂණය)
Sensor values such as temperature, humidity, and atmospheric pressure typically prioritize tracking trends over absolute precision. In these cases, FLOAT is well suited.
CREATE TABLE sensor_logs (
temperature FLOAT,
humidity FLOAT,
recorded_at DATETIME
);
For use cases involving millions of records and high-frequency inserts, FLOAT provides practical performance benefits.
2. ක්රීඩා සහ 3D යෙදුම් සංඛ්යාත්මක ස්ථාන
In game development and graphics processing, coordinates and rotation angles are commonly stored as FLOAT values. These values are primarily used for internal calculations, and minor rounding differences are generally acceptable.
3. සංඛ්යාත්මක දත්ත සහ මැද-මට්ටමේ යන්ත්ර ඉගෙනුම් ප්රතිඵල
In statistical processing or AI training workflows, intermediate results may be stored as FLOAT values to reduce computational overhead. Since subsequent normalization or correction steps are typically applied, small rounding differences are usually not problematic.
වැළැක්විය යුතු භාවිතා නඩු
There are also clear situations where FLOAT should not be used.
- ❌ මුදල් අගයන්, මිල ගණන්, සහ බදු අනුපාත ගණනය
- ❌ නිශ්චිත ඒකක මිල ගුණකරණ හෝ මූල්ය එකතුකිරීම්
- ❌ ඉන්වොයිස් හෝ රිසිට්පත් මත මුද්රණය කරන අගයන්
For example, the following table definition is risky:
-- Incorrect usage example
CREATE TABLE invoices (
amount FLOAT
);
This structure can introduce rounding discrepancies smaller than one cent, potentially causing mismatches between billed and paid amounts. In such cases, use a type such as DECIMAL(10,2) to guarantee precision.
FLOAT ආරක්ෂිතව භාවිතා කිරීම සඳහා හොඳම ක්රියාමාර්ග
- වටාපිටු වෙනස්කම් පිළිගත හැකි විට පමණක් FLOAT භාවිතා කරන්න
- භෞතික සංවේදක දත්ත, ලොග්, සහ අනෙකුත් අනුමාන අගයන් සඳහා භාවිතය සීමා කරන්න.
- සෘජු සමානතා සැසඳීම් වලින් වැළැක්වන්න
value = 0.1වැනි සැසඳීම් භාවිතා නොකරන්න. ඒ වෙනුවට පරාස-අධාරිත සැසඳීම් භාවිතා කරන්න.WHERE value BETWEEN 0.0999 AND 0.1001
- සෑම විටම විකල්ප සංඛ්යාත්මක වර්ගයන් පරීක්ෂා කරන්න
- වර්ගය තෝරා ගැනීමට පෙර, දත්තය මනුෂ්ය-මුහුණතේ මූල්ය අගයන් හෝ යන්ත්ර-මට්ටමේ මිනුම්ද යන්න පැහැදිලි කරන්න.
- ඔබගේ MySQL අනුවාදය සහ පරිසරය තුළ හැසිරීම තහවුරු කරන්න
- පරිසරය අනුව වටාපිටු හැසිරීම සහ සංඛ්යාත්මක සැසඳීම් ප්රතිඵල සුළු ලෙස වෙනස් විය හැක. ආරම්භක-ප්රචාරණය පෙර තහවුරු කිරීම අත්යවශ්ය වේ.
8. පොදු වැරදි අවබෝධයන් සහ ගැටළු විසඳීම
වැරදි අවබෝධය #1: “FLOAT නිවැරදිව ගණනය කළ හැක”
A common misunderstanding is assuming that 0.1 + 0.2 = 0.3 will always evaluate to TRUE when using FLOAT.
In reality, FLOAT values are stored as approximate binary representations, so the result may not be exactly equal.
SELECT 0.1 + 0.2 = 0.3; -- May return FALSE
කාරණය:
- 0.1, 0.2, 0.3 වැනි අගයන් බයිනරිව සම්පූර්ණයෙන් නිරූපණය කළ නොහැකි බැවින්, කුඩා වටාපිටු වෙනස්කම් සිදුවේ.
විසඳුම:
- FLOAT ප්රතිඵල සැසඳීමේදී, පිළිගත හැකි දෝෂ සීමා සලකා සැසඳීම් භාවිතා කරන්න.
SELECT ABS((0.1 + 0.2) - 0.3) < 0.00001;
වැරදි අවබෝධය #2: “FLOAT(M,D) නියම කිරීම නිශ්චිතතාවය සහතික කරයි”
Many developers assume that defining FLOAT(7,4) guarantees exact storage with 4 decimal places.
In reality, FLOAT still stores approximate values internally, and precision is not guaranteed even when M and D are specified. This is a major difference from DECIMAL.
Solution:
- DECIMAL වර්ගය භාවිතා කරන්න, දැඩි සංඛ්යාත්මක නිරවද්යතාවය අවශ්ය වන විට.
Misconception #3: “Standard Comparison Operators Work Normally”
WHERE value = 0.1 වැනි ප්රකාශන බොහෝ විට අපේක්ෂිත ලෙස ක්රියා නොකිරීමක් පෙන්වයි.
Cause:
- ෆ්ලොටින්-පොයින්ට් වටාපිටාවන් වෙනස් වීම නිසා නිශ්චිත සමානතාව පරීක්ෂණයන් TRUE ලබා නොදේ.
Solution:
- පරාස සසඳුම් භාවිතා කරන්න හෝ නිශ්චිත ගැලපීම සඳහා
DECIMALභාවිතා කරගන්න.
Misconception #4: “FLOAT Is Faster and Always Better Than DECIMAL”
FLOAT වේගවත් සහ ලාංඡන රහිත වුවද, එහි කාර්ය සාධන වාසිය නිරවද්යතාවයේ පිරිවැයක් වේ. ශේෂ, මිල, ප්රමාණ වැනි අගයන් සඳහා, අසමත්තා අනුමත නොකළ හැකි අවස්ථාවල, එය සුදුසු නොවේ.
Solution:
- පද්ධති අවශ්යතා (නිරවද්යතාව vs කාර්ය සාධනය) පැහැදිලිව නියම කර, FLOAT හෝ DECIMAL යන දෙකෙන් එකක් සුදුසු ලෙස තෝරන්න.
Common Issues and Recommended Fixes
| Issue | Cause | Recommended Fix |
|---|---|---|
| Calculation results do not match | Floating-point rounding error | Use comparisons with tolerance ranges |
| Conditions do not match expected rows | Equality comparison using = | Use BETWEEN or tolerance-based comparison |
| Decimals appear rounded | Precision limitation | Use DECIMAL for high-precision data |
| Monetary discrepancies occur | Floating-point arithmetic | Avoid FLOAT for financial processing |
9. Conclusion
What Is the FLOAT Data Type?
MySQL FLOAT දත්ත වර්ගය යනු ආකල්පිත දශම අගයන් ගබඩා කිරීම සහ සැකසීම සඳහා නිර්මාණය කරන ලද ෆ්ලොටින්-පොයින්ට් වර්ගයකි. එය අඩු ගබඩා භාවිතය සහ පුළුල් සංඛ්යාත්මක පරාසයක් හසුරවීමට හැකියාව වැනි වාසි ලබා දෙයි. කෙසේ වෙතත්, එය නිරවද්යතාව සීමා සහ වටාපිටාවන් සමඟ පැමිණෙන බැවින්, එය භාවිතා කරන විට එහි හැසිරීම සහ අදහස් කර ඇති භාවිතය පිළිබඳ පැහැදිලි අවබෝධයක් තිබිය යුතුය.
Main Points Covered in This Article
- FLOAT Basics : සుమාරූපයෙන් 7 වැදගත් අංක නිරවද්යතාවය සමඟ ෆ්ලොටින්-පොයින්ට් වර්ගයක්.
- Precision and Rounding : කුඩා වටාපිටාවන් සිදුවිය හැකි අතර, සසඳුම් කිරීමේදී අවධානයෙන් සිටිය යුතුය.
- Syntax and Usage :
FLOAT(M,D)සහUNSIGNED,ZEROFILLවැනි සංශෝධකයන්ට සහාය. - Comparison with Other Numeric Types :
DOUBLEවැඩි නිරවද්යතාවයක් ලබා දෙයි.DECIMALවටාපිටාවන් නොමැති නිරවද්ය සංඛ්යාත්මක ගණනයන් සපයයි.- Appropriate Use Cases : සංවේදක දත්ත සහ සංඛ්යාත්මක අගයන්, කුඩා වටාපිටාවන් පිළිගත හැකි අවස්ථා.
- Cases to Avoid : මූල්ය, බිල්පත්, හෝ බදු ගණනයන් වැනි නිරවද්යතාව අත්යවශ්ය වන අවස්ථා.
- Common Misconceptions and Solutions :
= 0.1වැනි සසඳුම් අසාර්ථක වීමේ හේතු සහ tolerance‑අධාරිත කොන්දේසි භාවිතා කිරීමේ විසඳුම්.
If You’re Unsure Whether to Use FLOAT
සන්ධානයේ සැකයක් ඇති විට, මෙම සරල නීතිය අනුගමනය කරන්න:
“ඔබේ පද්ධතිය කුඩා වටාපිටාවන් සහනය කළ හැකිද?”
YES →FLOATහෝDOUBLE
NO →DECIMAL
ඔබේ පිළිතුර සෘජුවම සුදුසු සංඛ්යාත්මක වර්ගය තීරණය කරයි.
The Right Choice Leads to Reliable Systems
දත්ත ගබඩා සැලසුම් කිරීමේදී, සංඛ්යාත්මක වර්ගයක් තේරීම අඩු අගයක් ලෙස සැලකෙයි, නමුත් එය අනාගත දෝෂ සහ අසමත්තා වල ප්රධාන මූලාශ්රයක් විය හැක. FLOAT නිවැරදිව අවබෝධ කර, සුදුසු අවස්ථාවල පමණක් භාවිතා කිරීම ස්ථාවර පද්ධති ක්රියාකාරිත්වය සහ විශ්වාසනීය දත්ත සැකසීම සඳහා දායක වේ.
We hope this article supports your MySQL design and implementation decisions.
Frequently Asked Questions (FAQ)
Q1. What is the difference between FLOAT and DOUBLE?
A.
FLOAT යනු එක්-නිරවද්යතා ෆ්ලොටින්-පොයින්ට් වර්ගයකි, සుమාරූපයෙන් 7 වැදගත් අංක ලබා දෙයි. DOUBLE යනු ද්වි-නිරවද්යතා වර්ගයකි, සుమාරූපයෙන් 15–16 වැදගත් අංක ලබා දෙයි.
ඉහළ නිරවද්යතාව අවශ්ය නම් DOUBLE භාවිතා කරන්න. ගබඩා කාර්යක්ෂමතාව සහ කාර්ය සාධනය වැඩි වැදගත් නම් FLOAT භාවිතා කරන්න.
Q2. What do M and D mean in FLOAT(M,D)?
A.
M යනු මුළු අංක ගණන (පූර්ණ කොටස + දශම කොටස) නියෝජනය කරයි, D යනු දශම ලක්ෂ්ය පසු අංක ගණන නියෝජනය කරයි. උදාහරණයක් ලෙස, FLOAT(7,4) යනු මුළු 7 අංක, ඒ අතර 4 අංක දශම ලක්ෂ්ය පසු ඇති බවයි.
කෙසේ වෙතත්, මෙය ප්රදර්ශන ආකාරය පාලනය කරන අතර නිරවද්යතාවය සහතික නොකරයි.
Q3. Can I use FLOAT for monetary values?
අ.
එය නිර්දේශ නොකෙරේ. FLOAT ස්ථිරභාග නොවන අගයන් සංරක්ෂණය කරයි සහ වටාරුණු වෙනස්කම් හඳුන්වා දිය හැක. නිවැරදි නිරවද්යතා අවශ්ය වන මූල්ය දත්ත සඳහා, DECIMAL වර්ගය භාවිතා කරන්න.
Q4. FLOAT අගයක් සමානතා සංසන්දනයක (=) හි ගැලපෙන්නේ ඇයි නැද්ද?
අ.
FLOAT අගයන් ස්ථිරභාග නොවන ද්වික ආකෘතිවල සංරක්ෂණය වේ. උදාහරණයක් ලෙස, 0.1 නිවැරදිව ලියාපදිංචි නොවිය හැක. එහි ප්රතිඵලයක් ලෙස, = 0.1 වැනි සංසන්දන FALSE ලෙස විග්රහ කළ හැක.
ගැලපෙන වටාරුණු සහනය සලකා බලන පරාස මූලික සංසන්දන භාවිතා කිරීම නිර්දේශ කෙරේ.
Q5. FLOAT භාවිතා කිරීමේදී වටාරුණු දෝෂ අවම කිරීමට ක්රමයක් තිබේද?
අ.
නැහැ. FLOAT භාවිතා කරන තුරු, වටාරුණු වෙනස්කම් සම්පූර්ණයෙන්ම ඉවත් කළ නොහැක. නිරවද්යතා තීරණාත්මක නම්, FLOAT සම්පූර්ණයෙන්ම වළක්වා DECIMAL භාවිතා කරන්න.
Q6. MySQL FLOAT දත්ත වර්ගය සපයන්නේ ඇයි?
අ.
FLOAT අවම සංරක්ෂණ භාවිතය සමඟ වේගවත් සංඛ්යාත්මක සැකසුම් සඳහා ප්රධාන වාසියක් ලබා දෙයි. වටාරුණු වෙනස්කම් ගැලපෙන තත්ත්වයන්හි, උදාහරණයක් ලෙස සංවේදක දත්ත ලොගිං, සංඛ්යාලේඛන වාර්තා, සහ 3D ඛණ්ඩාංක සැකසුම්, එය ඉතා ඵලදායී වේ.
වෙනස්කම් සුදුසු ලෙස භාවිතා කළ විට, FLOAT පද්ධති කාර්ය සාධනය සැලකිය යුතු ලෙස වැඩිදියුණු කළ හැක.


