2011-01-27 14 views
5

मुझे पता है कि यह अतीत में कुछ बार पूछा गया है लेकिन मैं जो कुछ भी कोशिश करता हूं वह असफल रहा है। मेरे पास UILabel के साथ एक कस्टम संख्यात्मक कीपैड है। जब मैं '1' हिट करता हूं तो UILabel एक प्रदर्शित करता है। UILabel आईफोन पर स्वचालित रूप से दशमलव स्थान कैसे डालें?

  • एक '4' बटन इसके बाद मैं चाहता हूँ में 0.01:

    • जब मैं '1' बटन मैं चाहता हूँ मारा: 0.14 UILabel
    • में अब यहाँ मैं क्या करने की कोशिश कर रहा हूँ है
    • फिर एक '6': 1.46
    • आदि, आदि

    अब कीबोर्ड और UILabel महान काम कर रहे हैं। मुझे अभी दशमलव का काम करने की आवश्यकता है। कोई नमूना कोड बहुत अच्छा होगा, (और जहां मुझे इसे अपने आवेदन में रखना चाहिए)। अगर आप मेरे कोड को अब तक देखना चाहते हैं तो मुझे बताएं। बहुत सीधा। सबको धन्यवाद!

  • +2

    डाउनवॉट्स क्यों? यह एक बड़ा सवाल है! –

    उत्तर

    4

    यहाँ कैसे मैं यह कर के बारे में बताया गया है:

    #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 का उपयोग करने का सुझाव बस उच्च परिशुद्धता संख्याओं की अनुमति देने के लिए है।

    +0

    ठीक है, सभी सवालों के लिए खेद है, लेकिन मैं अपना पहला आवेदन बना रहा हूं और मैं अभी भी उद्देश्य के लिए बहुत नया हूं-सी। क्या आप संक्षेप में समझा सकते हैं कि आपका कोड क्या कर रहा है? मुझे पता है कि आपने इसे बहुत अच्छी तरह से टिप्पणी की लेकिन मुझे अभी भी इस कोड का उपयोग करने के बारे में अनिश्चितता है :) –

    +0

    @Alex ने अभी जवाब संपादित करना समाप्त कर दिया :) –

    संबंधित मुद्दे