[英]C# string.format with decimal format.
DriveInfo[] drives = DriveInfo.GetDrives();
for (int i = 0; i < drives.Length; i++)
{
if (drives[i].IsReady)
{
Console.WriteLine("Drive {0} - Has free space of {1} GB",drives[i].ToString(),(drives[i].TotalFreeSpace/1024/1024/1024).ToString("N2"));
}
}
输出:
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
全部以,00结尾,但我需要显示实际大小。 那么哪种格式合适呢?
格式字符串与它无关。 您的整数运算将舍弃任何余数。
3920139012 / 1024 / 1024 / 1024 // 3
使用m
后缀指定小数,如下所示:
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);
}
}
因为您要进行整数除法 ,所以会舍去小数点后的位数。 改用浮点除法:
drives[i].TotalFreeSpace/1024.0/1024.0/1024.0
要么
drives[i].TotalFreeSpace / (1024.0 * 1024.0 * 1024.0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.