Я не верю, что в .NET есть что-то подобное. Вот ключевая часть скрипта PowerShell, я должен сделать это для меня.
$prefixes = @('', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
$base = 1024;
$magnitude = [Math]::Floor([Math]::Log($_, 1024))
Write-Verbose "`$magnitude = $magnitude"
if($magnitude -eq 0)
{
[string]$mantissa = $_
[string]$label = 'B';
}
else
{
[string]$mantissa = [String]::Format("{0:N}", $_ / [Math]::Pow(1024, $magnitude))
Write-Verbose "`$mantissa = $mantissa"
[string]$label = $prefixes[$magnitude]
if ($IEC)
{
$label += "i"
}
$label += $unit
}
[String]::Format("{0} {1}", $mantissa, $label)
Необходимо обновить, чтобы использовать расширенные функции PowerShell V2. (Части, которые я не вставил, являются частями, которые пытаются сделать то, что делают Расширенные функции, и это грязно.)