コンパイラがそのような警告を発行できなかったという技術的な理由はありません。ただし、これらは学生 (浮動小数点演算を本格的に扱う前に、浮動小数点演算がどのように機能するかを教える必要があります) や、浮動小数点演算を非常にうまく処理する人にのみ役立ちます。残念ながら、ほとんどの浮動小数点演算は大雑把です。人々は、コンピューターがどのように機能するかをあまり気にせずにコンピューターに数字を投げかけ、どんな結果が得られても受け入れます。
既存の浮動小数点コードの大部分をサポートするには、デフォルトで警告をオフにする必要があります。利用可能であれば、Mac OS X 数学ライブラリのコードで有効にします。確かにライブラリには、拡張精度演算を使用する場所など、浮動小数点値のすべてのビットに依存するポイントがあり、値は複数の浮動小数点オブジェクトで表されます (たとえば、 1/π の上位ビットを持つオブジェクト、1/π から最初のオブジェクトを引いた別のオブジェクト、および 1/π から最初の 2 つのオブジェクトを引いた 3 番目のオブジェクトで、約 150 ビットの 1/π が得られます)。そのような値の一部は、ソース テキストでは 16 進浮動小数点で表され、10 進数のコンパイラ変換に関する問題を回避します。また、残りの数値を簡単に変換して、新しいコンパイラの警告を回避できます。
しかし、十分な数の人々がこの警告を使用するか、十分な数のバグをキャッチして時間をかける価値があるかを、コンパイラ開発者に納得させることはできないと思います。libm の場合を考えてみましょう。通常はすべての定数に正確な数字を書きますが、ある時は別の数字を書きました。この警告はバグをキャッチしますか? さて、何のバグでしょうか?ほとんどの場合、数値は必要な値に正確に変換されます。この警告をオンにしてコードを記述する場合、浮動小数点計算がどのように実行されるかを考えている可能性が高く、記述した値は目的に適したものです。たとえば、計算したミニマックス多項式の係数である可能性があり、その係数は得られる限り良好です。
したがって、この警告でバグが見つかることはめったにありません。おそらく、数字をタイプミスして、誤って余分な数字を 16 進浮動小数点数に挿入し、表現可能な有効桁数を超えてしまうという事態を捉えることができるでしょう。しかし、それはまれです。ほとんどの場合、私たちが使用する数字は単純で短いものか、それらを計算するソフトウェアからコピーして貼り付けたものです。場合によっては、0x1.fffffffffffffp0 などの特殊な値を手動で入力します。余分な「f」がその数字に滑り込んだときの警告は、コンパイル中にバグをキャッチする可能性がありますが、特別な値を大幅に変更するため、そのエラーはテストですぐにキャッチされる可能性があります。
したがって、このようなコンパイラの警告はほとんど役に立ちません。それを使用する人はほとんどおらず、実際に使用している人のバグを発見することもほとんどありません。