这样的除法,如何实现

liulibo11119 2005-09-21 11:50:10
4字节无符号整数,表示,盘的存储容量,大于1MB,显示XXX.XXX MB,大于1KB乎 显示XXX.XXX KB
小于1K,显示 XXXX.XXX By

n/1024.0
是不是比 n/1024,
要耗时很多,
如果很多,则不用 n/1024.0 实现

另 用 sprintf(s, "%d.%d MB" n/(1024*1024), (n%(1024*1024))/1024);
求出的值与用 n/(1024*1024*0.1)
有很大出入,
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
K 2005-09-22
  • 打赏
  • 举报
回复
判断一下N的大小。
if (n<1024)
bytes;
else
if (n<1024*1024)
KB;
else
MB;
sprintf(s, "%d.%d MB" n/(1024*1024), (n%(1024*1024))/1024);

n%(1024*1024)/1024这里会取整的,你直接除就可以了。

float ratio=n/1024.0/1024.0;



边城狂人 2005-09-22
  • 打赏
  • 举报
回复
另 用 sprintf(s, "%d.%d MB" n/(1024*1024), (n%(1024*1024))/1024);
求出的值与用 n/(1024*1024*0.1)

当然会有很大的出入了
n / (1024 * 1024) 与 n / (1024 * 1024 * 0.1) 就是十倍之差
n % (1024 * 1024) / 1024 是将余数除以 1024,不知道你是何用意。
deping_chen 2005-09-22
  • 打赏
  • 举报
回复
printf("%dM, %dK, %dB", n>>20, (n&0xFFFFF)>>10, (n&0x3FF));
fjm_520 2005-09-22
  • 打赏
  • 举报
回复
楼上说中要害
zhouhuahai 2005-09-22
  • 打赏
  • 举报
回复
4字节无符号整数,表示,盘的存储容量,大于1MB,显示XXX.XXX MB,大于1KB乎 显示XXX.XXX KB
小于1K,显示 XXXX.XXX By

用移位操作比除法快得多(虽然有很多除法在内部会转化成移位):
除以1024就是右移10位.......
linxyuan 2005-09-22
  • 打赏
  • 举报
回复
good!
zijida 2005-09-22
  • 打赏
  • 举报
回复
楼主小脑袋瓜儿挺灵的.
liulibo11119 2005-09-22
  • 打赏
  • 举报
回复
谢谢各位,已实现了

void mmi_mydata_utils_convertToStrSize(const U32 ulSize, char *spStr)
{
U32 n1 = 0;
U32 n2 = 0;
if(NULL == spStr)
{
return;
}

if(MMI_MYDATA_SIZE_M_BYTE <= ulSize)
{
n1 = ulSize>>20; /*The same as ulSize/MMI_MYDATA_SIZE_M_BYTE*/;
n2 = ulSize&0x000FFFFF; /*The same as ulSize%MMI_MYDATA_SIZE_M_BYTE;*/
n2 *= 100;
n2 >>= 20;

sprintf(spStr, "%d.%d%d MB", n1, n2/10, n2%10);
}
else if(MMI_MYDATA_SIZE_K_BYTE <= ulSize)
{
n1 = ulSize>>10; /*The same as ulSize/MMI_MYDATA_SIZE_K_BYTE*/;
n2 = ulSize & 0x000003FF; /*The same as ulSize%MMI_MYDATA_SIZE_K_BYTE;*/
n2 *= 100;
n2 >>= 10;
sprintf(spStr, "%d.%d%d KB", n1, n2/10, n2%10);
}
else
{
sprintf(spStr, "%d Byte", ulSize);
}

}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧