Essayez cette :
var ordinals = new [] {"","K","M","G","T","P","E"};
long bandwidth = GetTheBandwidthInBitsPerSec();
decimal rate = (decimal)bandwidth;
var ordinal = 0;
while(rate > 1024)
{
rate /= 1024;
ordinal++;
}
output.Write(String.Format("Bandwidth: {0} {1}b/s",
Math.Round(rate, 2, MidpointRounding.AwayFromZero),
ordinals[ordinal]));
Les ordinaux (préfixes) disponibles ici sont kilo-, méga-, giga-, Tera, peta-, exa-. Si vous pensez vraiment que votre programme sera assez long pour voir les bandes passantes du réseau Zettabit et Yottabit, par tous les moyens jeter les initiales préfixe Z et Y dans le tableau. Pour convertir une chaîne formatée en une autre, divisée en espaces, examinez le terme qui sera le nombre, puis recherchez le terme suivant pour l'un des préfixes. Trouver l'index de l'ordinal dans le tableau, ajouter 1, et multiplier par 1024 autant de fois pour obtenir des bits par seconde:
J'aime vraiment celui-ci: D Merci! – Peter
Très bien - mais le préfixe pour 10^3 est 'k', pas 'K'. –
Picky, pointilleux. Je regarde Windows Explorer, et chaque taille de fichier est répertoriée dans "KB". Je sais que techniquement vous avez raison, mais c'est le seul cas pour un préfixe utilisé en informatique, donc en informatique c'est toujours K et pas k. La seule exception que je peux penser est dans les taux de transmission par modem; 56 kbps, pas 56 Kbps. – KeithS