UITextField du pavé numérique: point au lieu d'une virgule pour les valeurs flottantes
Je suis en utilisant un champ de texte qui est rempli d'un pavé numérique.
Problème, c'est que, avec beaucoup de région formats (tous les européens, par exemple), UITextField du pavé numérique a virgule au lieu de dot, de sorte que chaque fois que j'écris un nombre décimal, UITextField ne pouvez pas reconnaître la virgule décimale et numéro de la ronde; par exemple 23,07 devenir 23.
Comment puis-je résoudre ce problème?
J'ai pensé à définir le champ fixe sur les etats-unis; est-il possible? Comment?
J'ai lu la valeur à l'aide de ceci:
var importo = (importoPrevistoTF.text as NSString).floatValue
Afficher votre code. Plus en plus de pays utilisent une virgule. qu'un point décimal, voir: marque Décimale. Oh, je ne peux pas croire que les etats-unis n'est toujours pas utiliser le système Métrique! 😉
collectivement, nous sommes des idiots. 🙂 Nous enseigner le système métrique avec tiédeur à l'école. Le Canada n'a ce droit. À partir du début des années 70, ils ont tout simplement cessé d'enseigner aux enfants les "imperial" et de commutation.
Nous ne sommes pas seuls, le Libéria et le Myanmar aussi, ne pas utiliser le système métrique, c'est ça, juste nous trois.
Ajouté le code en question. Je pense que système métrique est plus intelligent, je ne comprends juste pas pourquoi ne pas trouver un compromis pour utiliser une virgule ou un point pour tout le monde...
Il serait un doublon si c'était rapide...
collectivement, nous sommes des idiots. 🙂 Nous enseigner le système métrique avec tiédeur à l'école. Le Canada n'a ce droit. À partir du début des années 70, ils ont tout simplement cessé d'enseigner aux enfants les "imperial" et de commutation.
Nous ne sommes pas seuls, le Libéria et le Myanmar aussi, ne pas utiliser le système métrique, c'est ça, juste nous trois.
Ajouté le code en question. Je pense que système métrique est plus intelligent, je ne comprends juste pas pourquoi ne pas trouver un compromis pour utiliser une virgule ou un point pour tout le monde...
Il serait un doublon si c'était rapide...
OriginalL'auteur Matte.Car | 2015-05-10
Vous devez vous connecter pour publier un commentaire.
Doublon potentiel de la DONC Réponse, utilisez
NSNumberFormatter
Exemple Swift:
Exemple (Objective-C):
OriginalL'auteur zaph
Swift 4
Localisée approche à l'aide de NumberFormatter:
Aire de jeux de tests
C'est une solution sous-optimale. Voir stackoverflow.com/a/30152398/337934 ou stackoverflow.com/a/30151275/337934 qui ne présumez pas de localisation
OriginalL'auteur Leo Dabus
Personne n'a vraiment répondu à la question directement.
Qui est, le séparateur décimal est une convention pour un jeu de paramètres régionaux.
iOS prend en charge le formatage des nombres basés sur un lieu particulier.
Si vous travaillez uniquement dans un endroit donné, alors tout devrait fonctionner correctement. Le clavier doit accepter les numéros avec le bon séparateur décimal.
Si vous êtes dans la plupart des pays en Europe, par exemple, vous devez entrer une virgule comme séparateur décimal. En saisissant un point dans ces pays est mal. Quelqu'un à partir de l'un de ces pays ne serait pas le faire, parce que c'est le mauvais séparateur décimal. Un Européen de l'utilisateur va savoir utiliser une virgule comme séparateur décimal et vous n'avez pas à faire quoi que ce soit.
Si vous êtes aux états-unis, vous pouvez utiliser une période. À l'aide d'une virgule dans le NOUS aurait tort.
La façon dont vous devriez afficher un nombre décimal avec un numéro de formateur. Lorsque vous créez un numéro de formateur, il utilise les paramètres régionaux par défaut.
Si vous avez besoin de convertir une chaîne de caractères contenant un nombre décimal d'une région à l'autre, vous devez utiliser 2 nombre de formateurs. L'utilisation d'un module de formatage de la source locale de convertir la chaîne de caractères à un flotteur. Ensuite, utilisez un module de formatage de la destination locale pour convertir le nombre en une chaîne de caractères dans le format de sortie.
Il suffit de créer un numéro de formateur par défaut dans les paramètres régionaux en cours, et de créer un deuxième numéro de formateur et de l'ensemble de paramètres régionaux explicitement pour les autres paramètres régionaux que vous souhaitez utiliser.
OriginalL'auteur Duncan C
C'est probablement un doublon de cette réponse, mais depuis l'origine est en Objective-C, voici une Swift version:
Le problème est que
formatter.numberFromString(label)
peut retournernil
et si les paramètres régionaux ne correspond pas au format de chaîne de caractères, il sera de retour nul.zaph Oui, vous avez raison!
OriginalL'auteur ayaio
Depuis NSNumberFormatter a été remplacé par NumberFormatter dans la version récente de Swift, j'aurais le plaisir de partager avec vous une version améliorée de la solution possible:
OriginalL'auteur giudigior
Swift 3: float ou double de la valeur de chaîne de caractères contenant virgule flottante virgule
Exemple:
OriginalL'auteur Peter Kreinz
Une solution que j'ai trouvé:
Dans mon cas, j'ai été le tester sur xcode et tout se passe bien, mais lors de l'essai sur le périphérique, il a été s'écraser. Tous les parce que, au Brésil, nous utilisons système métrique, séparées par une virgule virgule ",". Avec cette solution, il convertit automatiquement à partir de la virgule vers le point.
OriginalL'auteur Paulo Cassin
Swift 4 solution, sans l'aide de preferredLanguages j'ai eu des problèmes avec fr_US et decimalPad
OriginalL'auteur Arnaud Dorgans
Vous pouvez le convertir en utilisant
NumberFormatter
et de filtrage de l'différents séparateurs décimaux:OriginalL'auteur Soheil Novinfard
D'espoir, cela vous aide à vous 🙂
OriginalL'auteur xcodeUSER