C#string.format与十进制格式。
所有的结果都是,00,但我需要显示真实的尺寸。那么哪种格式合适呢?格式字符串与此无关。整数操作将丢弃任何余数C#string.format与十进制格式。,c#,decimal,string.format,C#,Decimal,String.format,所有的结果都是,00,但我需要显示真实的尺寸。那么哪种格式合适呢?格式字符串与此无关。整数操作将丢弃任何余数 Drive C:\ - Has free space of 70,00 GB Drive D:\ - Has free space of 31,00 GB Drive E:\ - Has free space of 7,00 GB Drive F:\ - Has free space of 137,00 GB 使用m后缀指定小数,如下所示: 3920139012 / 1024 / 10
Drive C:\ - Has free space of 70,00 GB
Drive D:\ - Has free space of 31,00 GB
Drive E:\ - Has free space of 7,00 GB
Drive F:\ - Has free space of 137,00 GB
使用m
后缀指定小数,如下所示:
3920139012 / 1024 / 1024 / 1024 // 3
或者:
3920139012 / 1024m / 1024m / 1024m // 3.6509139575064182281494140625
这可能更清楚一些:
3920139012 / Math.Pow(1024, 3) // 3.65091395750642
格式字符串与此无关。整数操作将丢弃任何余数
Drive C:\ - Has free space of 70,00 GB
Drive D:\ - Has free space of 31,00 GB
Drive E:\ - Has free space of 7,00 GB
Drive F:\ - Has free space of 137,00 GB
使用m
后缀指定小数,如下所示:
3920139012 / 1024 / 1024 / 1024 // 3
或者:
3920139012 / 1024m / 1024m / 1024m // 3.6509139575064182281494140625
这可能更清楚一些:
3920139012 / Math.Pow(1024, 3) // 3.65091395750642
因为你做的是整数除法,它会截断十进制余数。请改用浮点除法:
var gb = Math.Pow(1024, 3);
foreach(var drive in DriveInfo.GetDrives())
{
if(drive.IsReady)
{
Console.WriteLine("Drive {0} - Has free space of {1:n2} GB",
drive.Name,
drive.TotalFreeSpace / gb);
}
}
或
因为你做的是整数除法,它会截断十进制余数。请改用浮点除法:
var gb = Math.Pow(1024, 3);
foreach(var drive in DriveInfo.GetDrives())
{
if(drive.IsReady)
{
Console.WriteLine("Drive {0} - Has free space of {1:n2} GB",
drive.Name,
drive.TotalFreeSpace / gb);
}
}
或