C での IEEE 754 浮動小数点標準のチェック
C コンパイラが IEEE 754 浮動小数点標準に準拠しているかどうかの判断は、通常、次のように行われます。コンパイラ定義。ただし、C に使用される手法は C に直接適用できない場合があります。
C 固有のアプローチ
幸いなことに、C では numeric_limits を使用してこのチェックを実行する簡単な方法が提供されています。 class:
std::numeric_limits::is_iec559;
この式は、コンパイラで IEEE 754 が使用されている場合は true、それ以外の場合は false と評価されます。同様のチェックを float 型に対して実行することもできます:
std::numeric_limits::is_iec559;
Alternative Method
]numeric_limits アプローチの代替として、C に対する Adam の応答の 2 番目の部分を適応させることができます:
#include
int main() {
// Check for IEEE 754 compliance by checking for a finite number of float exponents.
if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
// Compiler uses IEEE 754.
} else {
// Compiler does not use IEEE 754.
}
}
このアプローチは、IEEE 754 が浮動小数点数の指数の特定の範囲を定義しているという事実に基づいています。コンパイラの最大指数が整数の最大サイズと一致する場合、それは IEEE 754 に準拠している可能性があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3