मेरे पास पोस्टग्रेस बैकएंड के साथ एक रेल 5.2 एप्लिकेशन है। जब मैं डेटाबेस से टाइमस्टैम्प खींचता हूं और इसे एक फ्लोट (to_f
) में परिवर्तित करता हूं, तो इसे सेकंड में माइक्रोसेकंड के साथ आंशिक सेकंड के साथ समय वापस करना चाहिए (क्योंकि सबसे बड़ी सटीक पोस्टग्रेज स्टोर माइक्रोसेकंड है)। इसके बजाय, मेरे द्वारा देखे जाने वाले टाइमस्टैम्प के लगभग 25% के लिए, टाइमस्टैम्प को फ़्लोट में परिवर्तित करते समय मुझे 7 दशमलव अंक (सैकड़ों नैनोसेकंड) मिलते हैं।
irb(main):009:0> u.created_at.to_f
=> 1440127129.5120609
यहाँ क्या चल रहा है? क्या यह 1440127129.512060
या 1440127129.512061
नहीं होना चाहिए? यह अतिरिक्त दशमलव अंक कहाँ से आ रहा है?
1 उत्तर
क्योंकि रूबी का inspect
जैसा कि आप देखते हैं, दशमलव रूप में मान को प्रिंट करता है, आंतरिक रूप से संग्रहीत रूप से परिवर्तित होता है, जो एक बाइनरी है, और इसके प्रतिनिधित्व का इसकी आंतरिक सटीकता से कोई लेना-देना नहीं है और इसका इससे कोई लेना-देना नहीं है। रूबी ऑब्जेक्ट इंस्टेंस में आयात करने से पहले डेटाबेस में संग्रहीत मूल्य की सटीकता।
बिंदु का (एक भाग) प्रदर्शित करने के लिए, irb या रेल कंसोल में f=0.1000; p f
आज़माएं। यह सिर्फ "0.1" प्रिंट करता है और "0.1000" नहीं प्रिंट करता है।
संबंधित सवाल
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।