GetDiskFreeSpaceEx函数的问题。

shelluser_2010 shelluser_2010 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
请问如何将GetDiskFreeSpaceEx函数中返回的64位无整型数转化为小数输出。 例如我现在C盘的总容量为9.75G,但是调用该函数是以字节为单位返回的,这是一个很大的数,我将这个数除以1073741824(1024的3次方)得到的是9,可是我想得到的是9.75,我在MSDN中找到了一个__atoi64的函数,好像也不行。请问有没有64位的float型,如果有它和64位无整型函数应如何转换。以下是我的代码,最后得到的是一个整数。

//定义变量
ULARGE_INTEGER nTotalBytes;
ULARGE_INTEGER nFreeBytes;
ULARGE_INTEGER nFreeByteOfTotal;

//调用函数以获得硬盘C分区的信息,为方便我没的使用判断函数调用是否成功。
::GetDiskFreeSpaceEx(_T("C:"),&nFreeBytes,&nTotalBytes,&nFreeByteOfTotal);

//定义变量用于接收C分区总大小,以字节为单位
__int64 i64TotalBytes = nTotalBytes.QuadPart;

//将字节转换为GB
i64TotalBytes = i64TotalBytes / 1073741824;

//转成字符串形式以便显示输出
char chT[10];
sprintf(chT,"你的C盘大小为:%I64u GB",i64TotalBytes);

//显示结果
MessageBox(chT);

...全文
评论 11
收藏 已收藏
分享
返回顶部
shelluser_2010
VC/MFC 16,550 成员 421,606 内容