उदाहरण के लिए, मैं 0,0.5, ... 5 से बटन की एक सूची दिखाना चाहता हूं, जो प्रत्येक 0.5 के लिए कूदता है। मैं ऐसा करने के लिए एक लूप का उपयोग करता हूं, और बटन STANDARD_LINE पर अलग रंग है:
var MAX=5.0;
var DIFF=0.5
var STANDARD_LINE=1.5;
for(var i=0;i<=MAX;i=i+DIFF){
button.text=i+'';
if(i==STANDARD_LINE){
button.color='red';
}
}
इस मामले में कोई गोल त्रुटि नहीं होनी चाहिए क्योंकि IEEE 754 में प्रत्येक मान सटीक है। लेकिन मैं संघर्ष कर रहा हूं यदि मुझे फ्लोटिंग पॉइंट समानता की तुलना से बचने के लिए इसे बदलना चाहिए:
var MAX=10;
var STANDARD_LINE=3;
for(var i=0;i<=MAX;i++){
button.text=i/2.0+'';
if(i==STANDARD_LINE/2.0){
button.color='red';
}
}
एक तरफ, मूल कोड मेरे लिए अधिक सरल और आगे है। लेकिन एक बात है जिस पर मैं विचार कर रहा हूं: i == STANDARD_LINE जूनियर टीम के साथियों को गुमराह करता है? क्या यह इस तथ्य को छिपाता है कि फ्लोटिंग पॉइंट नंबरों में राउंडिंग त्रुटियाँ हो सकती हैं? इस पोस्ट से टिप्पणियों को पढ़ने के बाद:
ऐसा लगता है कि कई डेवलपर्स हैं जो नहीं जानते हैं कि कुछ फ्लोट नंबर सटीक हैं। क्या मुझे फ्लोट संख्या समानता तुलनाओं से बचना चाहिए, भले ही यह मेरे मामले में वैध हो? या मैं इस बारे में सोच रहा हूँ?
button
आपके पाश में कहीं भी परिवर्तन नहीं होता है। बटन की सूची कैसे एक्सेस की जाती है? सरणी या किसी अन्य तंत्र में वाया सूचकांक? यदि यह किसी ऐरे में इंडेक्स एक्सेस के द्वारा होता है, तो यह पूर्णांक पर स्विच करने के पक्ष में एक और तर्क है।
i
केवल दूसरी लिस्टिंग में पूरे नंबर होंगे। दूसरे को हटाने का प्रयास करें/2.0
।