Сконвертировать число (MB) в (GB) математическим способом
Есть число в мегабайтах, к примеру 2189MB
Нужно это число превратить в : 2.1376953125 GiB
Как пример, нашёл на одном ресурсе формулу:
2189 x 2^-10 = 2.1376953125
Как это реализовать в C# ?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Не получится потому что соотношение другое между MB и GiB. Тот результат что вы ожидаете соответствует соотношению MiB к GiB.
2189 MB = 2189·1000·1000 B
2189 MB = ((2189·1000·1000) / (1024·1024·1024)) GiB ~= 2.0386651158332825 GiB
using System;
class Program
{
static void Main(string[] args)
{
const double MB_to_B = 1000 * 1000;
const double GiB_to_B = 1024 * 1024 * 1024;
const double B_to_GiB = 1 / GiB_to_B;
double v = 2189;
Console.WriteLine(v * MB_to_B * B_to_GiB);
}
}
$ csc /nologo temp.cs $ mono temp.exe 2.03866511583328
P.S. По числам в вопросе можно догадаться что все множители в программе двоичные. Принципы те же, код другой:
using System;
class Program
{
static void Main(string[] args)
{
const double MB_to_GB = 1.0 / 1024.0;
double v = 2189;
Console.WriteLine("{0:0.00}GB", v * MB_to_GB);
}
}
$ csc /nologo temp.cs $ mono temp.exe 2.14GB