2010-10-09 4 views
0

Je ne sais pas trop comment l'appeler, mais j'ai un champ de texte pour contenir une valeur monétaire, donc je stocke cela comme NSDecimalNumber. Je ne veux pas utiliser les chiffres & clavier de symboles, donc j'utilise un pavé numérique, et déduire l'emplacement d'une décimale comme les distributeurs automatiques de billets. Cela fonctionne bien pour entrer des nombres. Tapez 1234 et il affiche $ 12.34 mais maintenant j'ai besoin de mettre en place l'espace arrière. Donc, en supposant que 12,34 $ est entré en frappant en arrière l'espace montrerait 1,23 $. Je ne suis pas sûr de savoir comment le faire avec un nombre décimal. Avec un int, vous devez simplement diviser par 10 pour supprimer le chiffre le plus à droite, mais cela ne fonctionne évidemment pas ici. Je pourrais le faire par un peu de désordre en convertissant en int/10 puis de nouveau en décimal mais ça sonne horrible ... Des suggestions?NSDecimalNumber et les chiffres pop-off hors de la fin

Répondre

3

Appel - (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber withBehavior:(id <NSDecimalNumberBehaviors>)behavior sur elle

0

Comment l'utilisation stringValue?

1) NSDecimalNumber à cordes

2) substring dernière

3) Chaîne à NSDecimalNumber


Ci-dessous un exemple pour Swift 3

func popLastNumber(of number: NSDecimalNumber) -> NSDecimalNumber { 

    let stringFromNumber = number.stringValue //NSNumber property 

    let lastIndex = stringFromNumber.endIndex 
    let targetIndex = stringFromNumber.index(before: lastIndex) 
    let removed = stringFromNumber.substring(to: targetIndex) 

    return NSDecimalNumber(string: removed) 
} 

Si votre entrée nombre est un seul chiffre, il reviendrait NaN.

Vous pouvez le remplacer par NSDecimalNumber.zero si vous en avez besoin.

Cela peut fonctionner comme un bouton de suppression sur le calculateur.


Il n'a pas été testé beaucoup.

Si quelqu'un a trouvé un autre cas de NaN, veuillez rapporter par réponse.

Questions connexes