たとえば、IEEE-754 単精度でエンコードされた次の数値があります。
"0100 0001 1011 1110 1100 1100 1100 1100" (approximately 23.85 in decimal)
上記の 2 進数はリテラル文字列に格納されます。
問題は、精度を失うことなく、この文字列を IEEE-754 倍精度表現 (次のようなものですが、値は同じではありません) に変換するにはどうすればよいですか?
"0100 0000 0011 0111 1101 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1010"
これは同じ番号IEEE-754 倍精度でエンコードされます。
次のアルゴリズムを使用して、最初の文字列を最初に 10 進数に変換しようとしましたが、精度が失われます。
num in decimal = (sign) * (1 + frac * 2^(-23)) * 2^(exp - 127)
Windows プラットフォームで Qt C++ フレームワークを使用しています。
編集: 質問が明確に表現されていない可能性があります。つまり、真の値 23.85 がわからないということです。最初の文字列しか取得できず、精度を落とさずに倍精度表現に変換したいと考えています。