はい。
数値制限はクラステンプレートであり、maxは静的メソッドです。
template <class T> class numeric_limits {
public:
...
static T max() throw(); //constexpr if using C++11
...
};
したがって、floatタイプの場合、実際にstd::numeric_limits<float>::max()
は同じ値の2つのfloatを使用して単純に比較します(比較前にmyFloatを操作していない場合)。max()の値は、プラットフォームの一貫したfloatになり、それ自体と同等のバイナリ表現になります。
あなたが抱える主な問題は、異なる浮動小数点バイナリ表現を使用してプラットフォーム間でシリアル化および逆シリアル化しようとすることです。したがって、myFloat変数をシリアル化しようとした場合、他のマシンで、逆シリアル化された値の結果をnumeric_limits :: max()と直接比較しようとします。
if( myFloat == std::numeric_limits<float>::max() )
結果はもはや当てはまらないかもしれません。次に、「MAX」の概念をバイナリ表現でエンコードし、希望どおりに明示的に解釈する必要があります。