निम्नलिखित क्यों भिन्न हैं?रूबी डेट समीकरण अपेक्षित सत्य मूल्य वापस नहीं कर रहा है
Time.now.end_of_day == Time.now.end_of_day - 0.days # false
Time.now.end_of_day.to_s == Time.now.end_of_day - 0.days.to_s # true
निम्नलिखित क्यों भिन्न हैं?रूबी डेट समीकरण अपेक्षित सत्य मूल्य वापस नहीं कर रहा है
Time.now.end_of_day == Time.now.end_of_day - 0.days # false
Time.now.end_of_day.to_s == Time.now.end_of_day - 0.days.to_s # true
क्योंकि नैनोसेकंड की संख्या अलग है:
ruby-1.9.2-p180 :014 > (Time.now.end_of_day - 0.days).nsec
=> 999999000
ruby-1.9.2-p180 :015 > Time.now.end_of_day.nsec
=> 999999998
मैं व्यक्तिगत रूप से '# end_of_day' में एक बग मानता हूं। नैनोसेकंड मौजूद हैं, निश्चित रूप से, लेकिन अगर end_of_day दिन के अंत से कुछ नैनोसेकंड है, तो यह नहीं है, ermm, दिन का अंत;) – d11wtq
लेकिन जब आप इससे 0 दिन घटाते हैं, तो यह अंत से भी आगे है दिन का। तो यदि कोई बग है तो यह 'end_of_day' की तुलना में' days' में है। – Mischa
तरह मिशा ने कहा, बार नैनोसेकंड से भिन्न होते हैं। Here रेल में ऐसा करने के लिए वर्कअराउंड और फिक्स पर एक लेख है, खासकर आपके जैसे परीक्षणों के लिए।
प्रतीत होता है कि प्रतीत होता है कि सबसे सरल दृष्टिकोण .to_i
जोड़कर सेकंड को गोल करना है, लेकिन अन्य विकल्प भी हैं।
मिशा के जवाब पर विस्तार करने के लिए "सभी बार अंश हो सकता है जब एक दूसरे को-बार है कि जाहिरा तौर पर बराबर जब प्रदर्शित अलग हो सकता है जब की तुलना में कर रहे हैं के साथ कई बार की तुलना में इस तथ्य के प्रति सचेत रहें।। "
तो आपकी पहली गणना दो टाइम ऑब्जेक्ट्स की तुलना करती है, जो नैनोसेकंद स्तर पर अलग होती हैं, लेकिन आपकी दूसरी गणना समय ऑब्जेक्ट्स को स्ट्रिंग्स में परिवर्तित करती है, जो नैनोसेकंड को अनदेखा करती है और सच होती है क्योंकि दोनों स्ट्रिंग प्रस्तुतियां मेल खाते हैं।
'Time.now.end_of_day.to_s == Time.now.end_of_day.to_s - ((1 - 1) * 7) .days.to_s' से वापस क्या होता है? या शायद 'Time.now.end_of_day.to_s == (Time.now.end_of_day - ((1 - 1) * 7) .days) .to_s' –
@Phrogz, जो इसे ठीक नहीं करता है। मुझे लगता है कि जॉर्ज सही है, आपको 'to_i' का उपयोग करना होगा। – Mischa
@ मिस्चा कितना दिलचस्प है; मुझे सही करने के लिए धन्यवाद। – Phrogz