Récupérer une valeur dans une fonction
Bonjour,
J'essaye d'arrondir un nombre deux chiffres après la virgule.
J'ai trouvé cette solution qui fonctionne mais je n'arrive pas à extraire le résultat de la fonction.
J'imagine qu'il faut la passer dans une variable en utilisant le type "return" au lieu de "print" et affecter des paramètres à ma fonction.
J'ai essayé pas mal de trucs et la je sèche.
Pourriez-vous me donner une piste s'il vous plait ?
Voici une capture du playground.
Merci à vous
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est comme une fonction en mathématique:
y = f(x)
Ceci dit, il faut sans doute plutôt utiliser un NumberFormatter ou une de ses sous-classes dans ce cas, qui respectent les réglages, notamment sur le format des nombre. Par exemple en France, la virgule comme séparateur décimal, et l'espace insécable pour grouper les milliers.
Comme l'explique Ceroce, l'affichage d'un nombre dépend de la langue. Les français utilisent la virgule, pour séparer les parties entières et fractionnaires d'un nombre, alors que les anglo-saxons emploient le point décimal.
France -> 5,64
USA -> 5.64
En pratique les développeurs utilisent le . décimal, parce que les langages de programmation le font de base (ils ont tous été conçus de l'autre coté de l'atlantique).
NumberFormatter est une classe évoluée permettant d'afficher un nombre en fonction de n'importe quelle langue et des convention locales. Tu n'en n'a probablement pas besoin dans une phase d'apprentissage, mais penses-y si tu comptes diffuser une application à l'internationale.
Alors pas tous. Et la virgule a d'autres utilités bien plus logiques dans un code source, c'est surtout pour ça.
Je ne suis pas persuadé que Bill Gates ai eu ce genre de subtilité en tête, en concevant le premier basic Microsoft !
Et j'avoue être curieux de connaître le nom d'un langage n'utilisant pas de point décimal pour définir un flottant.
@Draken -> Le Alors pas tous. faisait référence au fait que tous les langages ne sont pas créés de l'autre côté de l'atlantique. Après comme je dis que la virgule est très utilisée pour d'autres raisons il est peut probable qu'elle soit utilisée pour marquer la décimale dans un nombre. Même le Eiffel utilise le
.
c'est dire...Bonjour à vous, merci pour vos réponses.
@Céroce Est-ce que je dois compléter la fonction que tu a écrit ou bien je suis sensé pouvoir l'utiliser telle quelle ?
@Draken Aurais-tu un lien à conseiller pour que je me renseigne sur le NumberFormatter ?
Je sais, le Kotlin sur lequel je bosse en ce moment, a été développé en République Tchèque. Le Pascal est né en Suisse. Et le Turbo Pascal de Borland, sur lequel j'ai appris la programmation structurée dans ma jeunesse, a été conçu par un Danois. Mais les archétypes de base, les principes fondamentaux sur lesquelles repose tous les langages viennent des USA. Même le système mécanographique des nazis, utilisé pour cartographier les lignées génétiques juives à la fin des années 30, a été conçu par IBM (qui ne s'en vante pas ).
https://developer.apple.com/documentation/foundation/numberformatter
Impeccable @Céroce ça fonctionne.
Petite question en parallèle, quand on lance le simulateur et que l'on écrit avec le clavier du mac, sur l'application nous sommes en qwerty et non pas en azerty. Ca se règle dans xCode ?
PS : petite capture du code
Si tu tapes dans le SearchHelp keyboard, tu devrais trouver un setting qui prend la locale du Mac
Le simulateur est un device iOS comme un autre. Par défaut il configuré en anglais. Si tu veux qu’il fonctionne en français (clavier Azerty et tout le reste) tu dois modifier les réglages, exactement comme si c’etait un vrai device et non une application sur ton Mac.
Hardware/Keyboard/Use the same keyboard Language as macOS
Merci @Larme
@Céroce je vois ce que tu voulais dire dans ton premier message.
J'ai passé le simulateur en Fr et du coup le clavier affiche une virgule et non plus un point. Résultat, l'appli ne marche plus GRrrrrr
J'ai du repassé en UK.
Je vais regarder tout ça prochainement...
Comme on a déjà dit, arrêtes d'utiliser String(format:_) !!! NumberFormatter s'occupe de tous ce problèmes.
Merci d'insister @Joanna Carter mais comme je l'ai dis à mainte reprise, je suis débutant et n'ai donc aucune idée de ce qu'est NumberFormatter ni de comment ça fonctionne (je ne sais même pas si j'ai une action à faire pour ça). Pour le moment j'essaye simplement de comprendre ce que je fais... petit à petit.
Tout d'abord, il faut régler la région dans le simulateur pour avoir les résultats différents.
Mais tu aurais pu le trouver en faisant une recherche en Google