バイナリ表現としてRFC 7049を使用するプロトコルを作成しています。標準では、数値がそれぞれの 64 ビット数値と同等である場合、プロトコルは数値の 32 ビット浮動小数点表現を使用できると規定されています。変換によって精度が失われてはなりません。
- 32 ビットの浮動小数点数のうち、64 ビット整数よりも大きく、それらと数値的に等しいものはどれですか?
float x; uint64_t y; (float)x == (float)y
値が同等であることを確認するのに十分な比較ですか? この比較は真実になるでしょうか?
この仕様の目的上、同じ数値の数値表現はすべて同等です。これは、エンコーダーが 0.0 の浮動小数点値を整数 0 としてエンコードできることを意味します。ただし、整数値を見つけることを期待するアプリケーションは、エンコーダーがこれらが望ましいと判断した場合にのみ浮動小数点値を見つける可能性があることも意味します。浮動小数点値が 64 ビット整数よりもコンパクトな場合と同様です。