जैसा कि अन्य उत्तरों में कहा गया है, फ्लोट अचूक है। यह भी याद रखें कि विजुअलवर्क्स एकल परिशुद्धता (लगभग 7 दशमलव स्थानों) के लिए डिफ़ॉल्ट रूप से फ़्लोट करते हैं, यदि आप अपने फ्लोट नंबर को अक्षर डी के साथ पॉफिक्स करते हैं, जैसे 5.1 डी आपको डबल सटीक (लगभग 15 दशमलव स्थान) मिलेगा, कम अचूक, लेकिन अभी भी निष्क्रिय है।
भ्रम का एक अतिरिक्त स्रोत यह है कि दो अलग फ़्लोट विजुअलवर्क्स में अनुमानित दशमलव प्रतिनिधित्व के साथ प्रिंट कर सकते हैं।
5.1 squared printString
-> '26.01'
लेकिन
5.1 squared = 26.01
-> false
ध्यान दें कि हाल ही में स्क्वीक या Pharo प्रिंट सिर्फ पर्याप्त दशमलव के विभिन्न फ्लोट भेद करने के लिए (और उन्हें अपरिवर्तित पुनर्व्याख्या)
5.1 squared
->26.009999999999998
वैकल्पिक रूप से, आप उपयोग कर सकते हैं तथाकथित सटीक परिचालन करने के लिए फिक्स्डपॉइंट (विजुअलवर्क्स, या स्केल्डडिसीमल में अन्य स्वाद):
theTestArray := #(1.2s 3 5.1s 7).
self assert: theTestArray squareOfAllElements = #(1.44s 9 26.01s 49).
इस अन्य जाल से भी सावधान रहें: एक फिक्स्डपॉइंट (स्केलडडिमेमल) केवल अंश बिंदु के बाद कई दशमलव मुद्रित करता है, लेकिन आंतरिक रूप से यह अधिक (असीमित कई) पकड़ सकता है।
5.1s1 squared printString
-> '26.0s1'
लेकिन
5.1s1 squared = 26.01s2
-> true
स्रोत
2012-07-17 21:50:49