簡體   English   中英

具有十進制格式的C#string.format。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM