看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《sonic010739 (sonic)》之銘言: : timespec的資料結構如下 : struct timespec : { : time_t tv_sec; /* seconds * : long tv_nsec; /* nanoseconds * : } : struct timespec a = {0, 800000000}; : struct timespec b = {1, 200000000}; : 兩個timespec運算 要考慮的部分太多 : 請問要如何以簡單的方法計算出 a - b = -0.4 而不是 -1.6 試著組合一下: 0 800000000 (兩個整數) ↘   ↙ 0.800000000 (一個浮點數) 同理從 b 也可以生出浮點數 1.2, 這一切都可以靠 sprintf/ sscanf 來達成: char buffer[40]; sprintf( buffer, "%zu.%09ld %zu.%09ld", a.tv_sec, a.tv_nsec, b.tv_sec, b.tv_nsec ); float value_of_a, value_of_b; sscanf( buffer, "%f %f", &value_of_a, &value_of_b ); printf( "%.1f", value_of_a - value_of_b ); 搞定. 非常無腦的方法, 應該夠簡單了吧? Orz -- ▂▂ ▄▂ T.T.L Listen 2 http://ppt.cc/jIUk ˇ ˇˇ ˇ 說什麼結束 ▃▃ http://ppt.cc/zQtB ψ髮箍 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115
HuangTzHuan:tv_sec + tv_nsec/1000000000.0 就好了吧?XD 05/05 08:40
我也是覺得樓上這樣做就好了... ※ 編輯: loveme00835 來自: 140.121.197.115 (05/05 10:40)
hpeter:上一篇提過了 轉long longXD (tv_sec*1000000000 + tv_nse) 05/05 19:23