मैं विपरीत रुख अपना लूंगा।
FLOAT
अनुमानित संख्याओं के लिए है, जैसे प्रतिशत, औसत, आदि। आपको फॉर्मेटिंग करनी चाहिए क्योंकि आप मूल्यों को प्रदर्शित करते हैं, या तो ऐप कोड में या FORMAT()
MySQL के फ़ंक्शन का उपयोग करके ।
कभी परीक्षण मत करो float_value = 1.3
; ऐसे कई कारण हैं जो असफल होंगे।
DECIMAL
मौद्रिक मूल्यों के लिए इस्तेमाल किया जाना चाहिए। DECIMAL
जब एक मूल्य को डॉलर / सेंट / यूरो / आदि के लिए गोल करने की आवश्यकता होती है, तो दूसरी गोलाई से बचा जाता है। लेखाकार सेंट के अंशों को पसंद नहीं करते हैं।
MySQL के DECIMAL
65 महत्वपूर्ण अंकों के कार्यान्वयन की अनुमति देता है; FLOAT
लगभग 7 और DOUBLE
16 के बारे में देता है। 7 आमतौर पर सेंसर और वैज्ञानिक गणना के लिए पर्याप्त से अधिक है।
"प्रतिशत" के रूप में - कभी-कभी मैंने उपयोग किया है TINYINT UNSIGNED
जब मैं भंडारण के केवल 1 बाइट का उपभोग करना चाहता हूं और बहुत सटीकता की आवश्यकता नहीं है; कभी-कभी मैंने FLOAT
(4 बाइट्स) का उपयोग किया है । विशेष रूप से प्रतिशत के लिए कोई डेटाटाइप ट्यून नहीं है। (यह भी ध्यान दें, कि DECIMAL(2,0)
मूल्य पकड़ नहीं सकता है 100
, इसलिए तकनीकी रूप से आपको आवश्यकता होगी DECIMAL(3,0)
।)
या कभी-कभी मैंने FLOAT
0 और 1. के बीच एक मान का उपयोग किया है , लेकिन फिर मुझे "प्रतिशत" प्रदर्शित करने से पहले 100 से गुणा करना सुनिश्चित करना होगा।
अधिक
तीनों "प्रतिशत, औसत, दर" से तैरने जैसी गंध आती है, इसलिए यह मेरी पहली पसंद होगी।
डेटाटाइप पर निर्णय लेने के लिए एक मानदंड ... मूल्य की कितनी प्रतियां मौजूद होंगी?
यदि आपके पास एक प्रतिशत के लिए एक स्तंभ के साथ एक बिलियन-पंक्ति तालिका है, तो विचार करें कि TINYINT
1 बाइट (कुल 1GB) FLOAT
लेगी , लेकिन 4 बाइट्स (कुल 4GB) लेगी। OTOH, अधिकांश अनुप्रयोगों में कई पंक्तियाँ नहीं होती हैं, इसलिए यह प्रासंगिक नहीं हो सकता है।
एक 'सामान्य' नियम के रूप में, "सटीक" मूल्यों के कुछ फार्म का उपयोग करना चाहिए INT
या DECIMAL
। अस्पष्ट बातें (वैज्ञानिक गणना, वर्गमूल, विभाजन, आदि) का उपयोग FLOAT
(या DOUBLE
) करना चाहिए ।
इसके अलावा, आउटपुट के प्रारूपण को आमतौर पर एप्लिकेशन फ्रंट एंड पर छोड़ दिया जाना चाहिए। यही है, भले ही "औसत" "14.6666666 ..." की गणना कर सकता है, प्रदर्शन को "14.7" जैसा कुछ दिखाना चाहिए; यह मनुष्यों के लिए मित्रता है। इस बीच, आपके पास बाद में तय करने के लिए अंतर्निहित मूल्य है कि "15" या "14.667" बेहतर आउटपुट स्वरूपण है।
रेंज "0.00 - 100.00" को या तो FLOAT
आउटपुट स्वरूपण के साथ या उपयोग किया जा सकता है DECIMAL(5,2)
(3 बाइट्स) पूर्व-निर्धारण के साथ कि आप हमेशा संकेतित परिशुद्धता चाहते हैं ।