J'ai une obligation de formater de grands nombres comme 4 316 000 comme "4,3 m". P>
Comment puis-je faire cela en C #? P>
5 Réponses :
Divisez le numéro de 1000000.0, puis appendez un "M". P>
N'oubliez pas de contourner le nombre à 1 décimale. P>
Cela fonctionne s'il essaie toujours de faire des millions, mais pas s'il veut des milliers, des millions, des milliards, etc.
La question posée sur les nombres comme 4 316 000 comme "4,3 m", d'autres formats n'étaient pas dans les exigences :)
Vous pouvez utiliser log10 pour déterminer le bon Pause. Quelque chose comme ça pourrait fonctionner:
Je dois aimer l'approche de rasoir de l'Occam!
long valueToFormat = 4316000; var dict = new Dictionary<long, string>() { {1000000000, "b"}, {1000000, "m"}, {1000, "k"} }; string formattedValue = valueToFormat.ToString(); foreach (long n in dict.Keys.OrderBy(k => k)) { if (valueToFormat < n) { continue; } double value = Math.Round(valueToFormat / (double)n, 1); formattedValue = String.Format("{0}{1}", value, dict[n]); } Console.WriteLine(formattedValue);
Si vous utilisez uniquement des fenêtres, vous pouvez utiliser une déclaration P-Invoke dans C # ou VB.NET pour appeler les fonctions Win32 strformatbytesizew ou strformatbytesize64 . Si votre application / site est garantie d'exécuter au moins Vista SP1 ou Server 2008, il y a aussi échantillon de la MSDN DOCS: P> Numeric value Text string
532 532 bytes
1340 1.30KB
23506 22.9KB
2400016 2.29MB
2400000000 2.23GB
Cela ne ferait pas 4 316 000 comme "4,3 m", comme la question posée, mais plutôt "4.12 Mo"
Oups, lisez la question en ce qui concerne les diviseurs binaires, au lieu de diviseurs décimaux.
3000 ==> 3k 3300 ==> 3,3k 3333 ==> 3,333k 30000 ==> 30k 300000 ==> 300k 3000000 ==> 3M 3000003 ==> 3M 0,253 ==> 253m 0,0253 ==> 25,3m 0,00253 ==> 2,53m -0,253003 ==> -253,003m
Bien que cela ne réponde pas à cette question particulière précisément, cela va bien plus loin et est très utile pour travailler avec métrique Préfixes . +10
Euh, langage de programmation? Plate-forme? Aidez-nous ici. La réponse courte est la suivante: écrivez un certain code pour formater diverses gammes de valeurs de manière appropriée en fonction des exigences.
@JIM: C # est dans les balises pour la question. La question pourrait aider en faisant un peu plus évident.
Vous pouvez également ajouter l'argent de la balise ou la finance ... aiderait beaucoup de peeps :)
@John Gietzen: Microsoft embauche des trolls en tant que gestionnaires de programme?
@Musigenèse: Regard sur le logiciel de Microsoft, cela peut être la vérité :)
@Jim, tu as raison. Je laisse la balle tomber sur celui-là. J'ai appliqué de manière appropriée. @John, merci de me reposer en ligne.
Les gens peuvent regarder la réponse à une question ultérieure en double dans Stackoverflow.com/a/16091580/380384 pour un autre (IMHO plus complet) réponse.