Comparaison d'un double ou Float avec 0
Patyom
Membre
Bonjour,
J'ai un petit souci pour comparer une donnée avec Zéro
je m'explique : Je récupère une donnée en string comme cela : "-0,40%" et je voudrais la comparer avec 0 pour savoir si c'est plus grand ou plus petit.
J'ai essayé pas mal de choses mais sans grand succès.
quelle méthode employez-vous
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ca depend :
1) Si le format de ta chaine est toujours le même, tu extrait la valeur réelle de la chaine (en supprimant préalablement le symbole "%", les espaces éventuels et en remplaçant "," par ".") par les fonctions standards du C/C++ (strtod par exemple).
2) Si le format est localisé, je te conseille d'utiliser un NSNumberFormatter avec le style NSNumberFormatterPercentStyle.
Je vais juste de trouver la solution et effectivement çà donne :
exemple : texte = "-0,40%"
func couleurTextePC(texte: String) -> String {
// Transformation des Valeurs
var couleurTexte: String = ""
let txt = String(describing: texte)
var vei = txt.replacingOccurrences(of: "%", with: "")
vei = vei.replacingOccurrences(of: ",", with: ".")
let valeur01 = Float(vei)
if valeur01! < 0 {
couleurTexte = "red"
} else if valeur01! > 0 {
couleurTexte = "green"
} else {
couleurTexte = "black"
}
return couleurTexte
}
Désolé, je n'arrive pas à bien l'afficher.
Pour formater le code de ton post, encapsule ton code avec la balise ```
Ça donne cela :
Je ne pense pas que la coloration syntaxique en fonction du langage soit dispo dans le forum.
Je comprends même pas le but de la fonction... Pour moi "couleurTextePC" n'est pas un bon nom de fonction désignant une action... Pour moi c'est d'avantage le nom d'une propriété.
Il serait plus "simple" d'utiliser NumberFormatter comme l'a souligné klog (en faisant attention aux Locale).
Beaucoup plus correct, tu peux utiliser le code suivant :
Mais attention au numberStyle de .percent - ça donnera une valeur de 0,004 pour un string de "0,40%". C'est attendu ?
C'est suffisant, il me faut juste savoir si c'est > ou < que zéro
Ca marche merci
Si le seul objectif est de déterminer si la valeur est négative, pourquoi, alors, ne pas te contenter de vérifier la présence du signe "-" dans ta chaine ?
et le zéro tu le traites comment dans ce cas là !
Au temps pour moi... J'ai pas regardé le code en détail.