2011-05-20 14 views
8

मेरे पास एक फ्लोट कॉलम है जिसमें 0.00000000000234MySQL से फ़्लोट का चयन करते समय मैं घातीय नोटेशन कैसे अक्षम कर सकता हूं?

जब मैं उन्हें MySQL में चुनता हूं, तो मैं उन्हें 2.34e-13 जैसे घातीय नोटेशन में वापस ले जाता हूं। क्या कोई तरीका है कि मैं MySQL को 0.00000000000234 के रूप में वापस करने के लिए मजबूर करने के लिए इन नंबरों के स्वरूपण को संशोधित कर सकता हूं?

आखिरकार जो मैं करना चाहता हूं वह प्रदर्शन को संशोधित करता है, संख्या के अंतर्निहित प्रतिनिधित्व नहीं। तो यह शायद एक प्रदर्शन या स्वरूपण सेटिंग होगा। MySQL में एक FORMAT() फ़ंक्शन है, लेकिन यह कुछ भी नहीं है जो मैं चाहता हूं (यह संख्याओं को 123,456.78 जैसा प्रारूप में रखता है)।

+2

mysql संख्याओं को प्रारूपित नहीं करता है, यह वास्तविक फ्लोट देता है। परिणाम प्रदर्शित करने के लिए आप किस फ्रंटेंड/यूआई का उपयोग कर रहे हैं? – sehe

+0

@sehe, वास्तव में MySQL संख्याओं को घातीय नोटेशन में प्रारूपित करता है यदि आपके पास आपके (<1) दशमलव के सामने बहुत अधिक शून्य हैं। मुझे अंतर्निहित MySQL क्लाइंट का उपयोग करके यह परिणाम मिलता है। तालिका से Mycol चुनें जहां आईडी = 1, mycol घातीय हो जाएगा। – Stephen

+0

तो 'बिल्टिन' क्लाइंट (जो कि बिल्टिन नहीं है, लेकिन मुझे आपका मतलब है) स्वरूपण करता है। – sehe

उत्तर

2

आपको उन मानों को संग्रहीत करने के लिए DECIMAL का उपयोग करने पर विचार करना चाहिए, क्योंकि फ्लोट मान सभी अनुमानित हैं, और ऐसी छोटी संख्याओं से निपटने में गलत हैं। एक DECIMAL जैसा आप चाहते हैं प्रदर्शित किया जाएगा।

+0

को स्पष्ट करने के लिए धन्यवाद मेरी धारणा यह थी कि फ़्लोट केवल तभी गलत था जब आपके पास बहुत सारे महत्वपूर्ण अंक हैं, न कि यदि आपके पास बस बहुत बड़ी या छोटी संख्या है। इन मामलों में, मेरे पास केवल 3-5 महत्वपूर्ण अंक हैं, और मैं बस भंडारण और पुनर्प्राप्ति कर रहा हूं। – Stephen

+0

मैंने एक दशमलव का उपयोग करने का प्रयास किया और यह काम किया। मुझे यकीन नहीं है कि मैं अपने सभी फ़्लोट्स को दशमलव पर बदलना चाहता हूं, फिर भी स्वरूपण को बदलने का तरीका जानने की उम्मीद है। लेकिन यह मदद करता है। – Stephen

+0

दरअसल, दूसरे विचार पर, यह काम नहीं करेगा क्योंकि मेरे आवेदन की आवश्यकताओं में से एक यह है कि संख्याओं को मनमाने ढंग से संख्याओं को रखने के लिए स्वरूपित किया गया है, लेकिन पीछे शून्य नहीं है। तो उदाहरण के लिए मैं उसी कॉलम में 2.345 और 4.5 चाहता हूं, 4.500 नहीं। तो दशमलव मेरे लिए एक विकल्प नहीं है। मुझे किसी भी तरह से फ्लोट से घातीय नोटेशन को खत्म करने की जरूरत है। – Stephen

0

आप दौर का उपयोग कर सकते हैं। यानी

foo से गोल (कॉलम, 10) का चयन करें;

4

आप नंबर को वांछित प्रदर्शन प्रारूप में वापस कर सकते हैं। इसे एक बड़े पर्याप्त दशमलव मूल्य पर कास्ट करें और उसके बाद प्रदर्शन फ़ॉर्म प्राप्त करने के लिए DECIMAL को एक वर्ण में डालें। यह पूरी तरह से प्रदर्शित होता है और आपको mysql (अगर ऐसा वांछित) में फ्लोट स्टोर करना जारी रखता है।

mysql> SELECT CAST(CAST(f AS DECIMAL(14,14)) AS CHAR) AS example from test; 
+------------------+ 
| example   | 
+------------------+ 
| 0.00000000000234 | 
+------------------+ 
1 row in set (0.00 sec) 

आप मूल्य के आधार पर पाठ्यक्रम की कुछ सटीकता खो देंगे।

+0

+1: बहुत अच्छा :) –

+0

धन्यवाद :) मेरा पहला उपहार। – Montdidier

संबंधित मुद्दे

 संबंधित मुद्दे