%lf一般和double类型一起用,你想输出保留几位可以设置的,比如,printf("%.5lf",a)就是五位,但默认为6位小数输出。
实例:
static void ExGetRandom_PER1(void) //IM310 [persist.sys.tm.cpu]: [ARM Cortex-A7,528M]
{
int Random_len[] = {1,4096};
int iRet;
int i, j, N;
int cnt = 100;
int len;
char data[100][4096];
struct timeval tv;
unsigned long time1,time2,time3,time4,AllTime=0;
double AvgTime = 0;
char tmp[1024];
char CPUinfo[64]={0};
N = TellCPUInfo(CPUinfo);
time1 = 0;
time2 = 0;
time3 = 0;
time4 = 0;
for (i=0; i < ARRAY_SIZE(Random_len); i++)
{
len = Random_len[i];
printline_p(4, LEFT_P, "Random_len=%d", len);
gettimeofday (&tv, NULL);
time1 = tv.tv_sec;
time2 = tv.tv_usec;
for (j = 0;j < cnt;j++)
{
iRet = ExGetRandom(data[j], len);
ASSERT(iRet == RET_OK,"ExGetRandom fail! len=%d iRet=%d",len, iRet);
}
gettimeofday (&tv, NULL);
time3 = tv.tv_sec;
time4 = tv.tv_usec;
AllTime = (time3 - time1) * 1000000 + (time4 - time2); //得到时间单位为us(微秒)
AvgTime = AllTime / cnt;
ASSERT(AvgTime<=GetRandom_AvgTime[N][i],
"Random_len = %d, AvgTime:%lf us exp<= %lf us\n",len, AvgTime, GetRandom_AvgTime[N][i]);
printf("Random_len = %d, AllTime = %lu us AvgTime = %lf us\n",len, AllTime, AvgTime);
LOG("Random_len = %d, AllTime = %lu us AvgTime = %lf us\n", len, AllTime, AvgTime);
memset(tmp, sizeof(tmp), 0x00);
snprintf(tmp, sizeof(tmp), "Random_len=%d", len);
RECORD("%s%s", " Indicator Name", "average time of generating random numbers(us)",
"%s%s", "Condition", tmp,
"%s%f", " value", AvgTime);
}
}
输出结果:为保留小数点后6位格式化输出。