J'ai une double valeur, si ce numéro est comme celui-ci: 123.00 Je dois le montrer comme 123, sans décimales, mais si le nombre est similaire à 123,23 ou 123,2, j'ai besoin de le montrer avec la présente décimale Lieux: 123.23 ou 123.2, selon le cas. P>
J'ai essayé avec un format décimal mais je n'ai pas pu trouver le bon modèle. P>
C'est une meilleure façon de le faire qu'une conversion de chaîne et de fonctionner avec des sous-chaînes et des choses comme ça? P>
3 Réponses :
Voici une façon de le faire:
fun func(x: Double): String {
if (x.rem(1).compareTo(0) == 0){
return x.toInt().toString();
} else {
return x.toString();
}
}
print(func(1.32132)); //Returns 1.32132
print(func(3.00)); //Returns 3
Decimalformat est ce que vous recherchez, je pense:
123 123.3 123.32 123.33
Vous pouvez utiliser décimalformat code> avec SetMAximumFractionDigits code>. Créer une fonction d'extension conserverait la complexité du site d'appel: 3.14159.toStringRounded(2) // will be "3.14"
Cela répond à une question que l'OP n'a pas demandé et fait des hypothèses sur ce que l'utilisateur pourrait vouloir. Vous ajoutez une complexité sans raison. Pour la question simple que la puissance pose, votre réponse est significativement plus "fastidieuse" et beaucoup moins lisible. Lecture "3.00.Format (2)", comment savoir que cela devrait produire "3" plutôt que "3,00"? Voir le «##» comme quelque chose de particulièrement intéressant, juste au-dessus de l'utilisation du motif, est une information précieuse, pas quelque chose de fastidieux.
Merci pour votre réponse. Je ne pensais pas que tu m'assiègeant ma réponse et que tu n'étais pas du tout à frapper votre intention de fournir plus d'informations. J'enseigne le codage dans le cadre de mon travail et deux choses que je suis toujours "frappant" mes élèves à la maintien du code aussi lisible que possible et de ne pas ajouter de complexité inutile. Donc, je cherchais principalement les futurs lecteurs qui pourraient être orientés de ces deux idéaux. Il y a certainement des cas, comme si vous aviez besoin de faire la précision programmable, où quelque chose comme votre solution pourrait être justifié. C'est juste, imo, n'est pas si ici.
Que diriez-vous de 'Tostringminimizedecimalplaces ()' ou quelque chose comme ça? (Les méthodes d'extension sont cool, n'est-ce pas?!?!)
Grâce à vous tous, la solution basée sur un modèle de décimalformat fonctionne bien.