long long
(64 ビット) 値を取得し、(64 ビット) 値a
からb
多かれ少なかれ等しいdouble
値d
を取得するにはどうすればよいですか? これは可能ですか(精度を損なうことなく)?(double)a / b
d
私はこれに沿って試しましたが、どこにも行かなかったので、間違った考えを持っているのではないかと考えています:
union ieee754_double u;
u.d = d;
long long a = (long long)u.ieee.mantissa0 << 32 | u.ieee.mantissa1;
long long b = (long long)1 << (u.ieee.exponent + IEEE754_DOUBLE_BIAS);