Cで精度を落とさずに次の計算をしたい.
uint64_t ts_1 = 0x5212cb03ca115ac0;
uint64_t ts_2 = 0x5212cb03ca115cc0;
uint64_t ts_delta = (ts_2 - ts_1)
double scale_factor = ts_delta/(2^32)
ts_delta の値を取得してい0x200.
ますが、scale_factor の値は15.000000
.基本的に、計算中に精度を失っています。
精度を落とさずに行うにはどうすればよいですか?
これは、私が印刷しようとしている方法に関する短い自己完結型の例です。
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int main()
{
uint64_t ts_1 = 0x5212cb03ca115ac0;
uint64_t ts_2 = 0x5212cb03ca115cc0;
uint64_t ts_delta = (ts_2 - ts_1);
double scale_factor = ((double)ts_delta) / (((uint64_t)1) << 32);
printf("ts_delta %"PRIx64" scale factor %f \n",ts_delta,scale_factor);
return 0;
}