यहाँ कैसे मैं यह कर के बारे में बताया गया है:
#define NUMBER_OF_DECIMAL_PLACES 2
NSMutableArray *typedNumbers = ...; //this should be an ivar
double displayedNumber = 0.0f; //this should also be an ivar
//when the user types a number...
int typedNumber = ...; //the number typed by the user
[typedNumbers addObject:[NSNumber numberWithInt:typedNumber]];
displayedNumber *= 10.0f;
displayedNumber += (typedNumber * 1e-NUMBER_OF_DECIMAL_PLACES);
//show "displayedNumber" in your label with an NSNumberFormatter
//when the user hits the delete button:
int numberToDelete = [[typedNumbers lastObject] intValue];
[typedNumbers removeLastObject];
displayedNumber -= (numberToDelete * 1e-NUMBER_OF_DECIMAL_PLACES);
displayedNumber /= 10.0f;
//show "displayedNumber" in your label with an NSNumberFormatter
एक ब्राउज़र में टाइप। चेतावनी कार्यान्वयन। double
के बजाय NSDecimal
का उपयोग करने के लिए बोनस अंक।
क्या हो रहा है की व्याख्या:
हम अनिवार्य रूप से बिट स्थानांतरण कर रहे हैं, लेकिन आधार 2. के बजाय आधार 10 में उपयोगकर्ता के एक नंबर (पूर्व: 6), हम "बदलाव" मौजूदा संख्या एक दशमलव स्थान छोड़ा (उदा: 0.000 => 00.00), टाइप किए गए नंबर को 0.01 (6 => 0.06) से गुणा करें, और इसे हमारे मौजूदा नंबर (00.00 => 00.06) में जोड़ें। जब उपयोगकर्ता किसी अन्य नंबर (उदा: 1) में टाइप करता है, तो हम वही काम करते हैं। शिफ्ट बाएं (00.06 => 00.60), टाइप किए गए नंबर को 0.01 (1 => 0.01) से गुणा करें, और जोड़ें (00.60 => 00.61)। संख्या को संग्रहीत करने का उद्देश्य NSMutableArray
केवल हटाने को आसान बनाने की सुविधा है। हालांकि, यह जरूरी नहीं है। बस एक सुविधा
जब उपयोगकर्ता डिलीट बटन (यदि कोई है) को हिट करता है, तो हम अंतिम संख्या दर्ज करते हैं (उदा: 1), इसे 0.01 (1 => 0.01) गुणा करें, इसे हमारे नंबर से घटाएं (0.61 => 0.6), और उसके बाद हमारे नंबर को एक दशमलव स्थान (0.6 => 0.06) स्थानांतरित करें। इसे तब तक दोहराएं जब तक आपके पास दर्ज की गई संख्याओं की संख्या में संख्याएं हों। उस सरणी खाली होने पर हटाएं बटन को अक्षम करें।
NSDecimal
का उपयोग करने का सुझाव बस उच्च परिशुद्धता संख्याओं की अनुमति देने के लिए है।
स्रोत
2011-01-27 19:49:06
डाउनवॉट्स क्यों? यह एक बड़ा सवाल है! –