मैं MySQL डेटाबेस स्कीमा में फ़्लोटिंग पॉइंट कॉलम को पेश करके एक समस्या में भाग गया कि फ़्लोटिंग पॉइंट मानों की तुलना हमेशा सही परिणामों को वापस नहीं करती है।MySQL फ़्लोटिंग पॉइंट तुलना मुद्दों
1 - 50.12
2 - 34.57
3 - 12.75
4 - ... (आराम 12.00 की तुलना में सभी कम)
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
यह रिटर्न मुझे "3"।
मैंने पढ़ा है कि MySQL में फ़्लोटिंग पॉइंट मानों की तुलना एक बुरा विचार है और दशमलव प्रकार बेहतर विकल्प है।
क्या मुझे फ्लोट प्रकार के साथ आगे बढ़ने की उम्मीद है और तुलना सही ढंग से काम करने के लिए मिलता है?
में ऐसे विसंगतियों के लिए एक स्पष्ट कारण की तरह नहीं लगता है एसक्यूएल में डबल उद्धरण चिह्नों में किस प्रकार के अक्षर संलग्न हैं? – Joey
दुर्भाग्यवश, MySQL डबल कोट्स को डिफ़ॉल्ट रूप से सिंगल-कोट्स की तरह कार्य करने की अनुमति देता है। यह सुविधा 'ANSI_QUOTES' विकल्प के साथ बंद की जा सकती है, जो उन्हें एएनएसआई एसक्यूएल मानक (उपर्युक्त क्वेरी में गैर-मानक बैकटिक्स की तरह) के अनुसार पहचानकर्ताओं को संदर्भित करेगी। – bobince
12.75 बाइनरी (1100.11) में बिल्कुल प्रतिनिधित्व योग्य है, इसलिए मुझे नहीं लगता कि यह परीक्षण "> 12.75" कैसे पास करता है। क्या आप सुनिश्चित हैं कि आपकी सूची में कोई अन्य बिंदु> 12.75 नहीं है? –