#include <sys/time.h> #include <stdio.h> #include <unistd.h> int main(){ double db; float ft; struct timeval tv; char tt[30]; gettimeofday(&tv,NULL); int len = sprintf(tt,"%ld.%ld",tv.tv_sec,tv.tv_usec); tt[len] = '\0'; sscanf(tt,"%f",&db); sscanf(tt,"%f",&ft); printf("tt:\t%s\n db:\t%f\n ft:\t%f",tt,db,ft); return 0; } |
原帖由 sunceenjoy 于 2008-9-27 09:25 发表
怎么我这里就是不行啊.
tt: 1222478666.380682
db: 0.00000
ft: 0.00000
atof: 0.000000
Linux test1.yellzone.com 2.4.21-40.ELsmp #1 SMP Thu Feb 2 22:22:39 EST 2006 i686 i686 ...
clock_t start, finish; double duration; start = clock(); /**待测程序段*/ finish = clock(); duration = (double)(finish - start)/ CLOCKS_PER_SEC; printf("\n%f",duration); |
原帖由 sunceenjoy 于 2008-9-27 09:28 发表
其实我是想实现一段程序执行的时间。
有人用
clock_t start, finish;
double duration;
start = clock();
/**待测程序段*/
finish = clock();
duration = (double)(finish - st ...
原帖由 Godbach 于 2008-9-27 09:28 发表
刚才试了一下,ft可以出来值。但是感觉
tt: 1222289739.926623
db: 0.000000
ft: 1222289792.000000
感觉可能是float默认总的长度有限,肯定低于你这里sec和usec的长度,所以只能显示部分。
原帖由 sunceenjoy 于 2008-9-26 18:08 发表
...
double db;
double ft; //
...
sscanf(tt,"%lf",&db);
sscanf(tt,"%lf",&ft);
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |