time() 的計算時間的 精確度
by 高顯忠, 2010-11-15 11:06, 人氣(1488)
只有到 秒。
以下的程式的 輸出,可以看出一些 奇怪的現象。
#if 0
no= 10, sum= 55, dt= 0
no= 30, sum= 465, dt= 0
no= 90, sum= 4095, dt= 0
no= 270, sum= 36585, dt= 0
no= 810, sum= 328455, dt= 0
no= 2430, sum= 2953665, dt= 0
no= 7290, sum= 26575695, dt= 0
no= 21870, sum= 239159385, dt= 0
no= 65610, sum= -2142598441, dt= 0
no= 196830, sum= -2103713615, dt= 0
no= 590490, sum= -1754143841, dt= 0
no= 1771470, sum= 1390803145, dt= 0
no= 5314410, sum= -372987993, dt= 0
no= 15943230, sum= 922132129, dt= 0
no= 47829690, sum= -338575121, dt= 1
上面的時間 1, 乘以 3, 為何是 0, ???
no= 143489070, sum= 1104302137, dt= 0
上面的時間 0, 乘以 3, 為何是 2, ???
no= 430467210, sum= 918317431, dt= 2
no= 1291401630, sum= -1616479343, dt= 5
Press any key to continue
#endif
// ----------------------------------------------
#include <time.h>
#include <math.h>
#include <stdio.h>
void main()
{
int no, t1, t2, sum, i;
no= 10;
while (no > 0) {
t1= time(NULL);
sum= 0;
for (i=1;i<=no;i++) {
sum+= i;
}
t2= time(NULL);
printf("no= %12d, sum= %12d, dt= %5d\n", no, sum, (t2 - t1));
no*= 3;// 為何不是 乘以2, ...
}
}// end of main()
因為,電腦使用 二進位,累乘以 2, 會得到一些 奇怪的結果,
有興趣的,可以自己 試試看,。。。