/QIfist (_ftol を呼び出さない)
更新 : 2007 年 11 月
浮動小数点型から整数型への変換が必要なときには、ヘルパー関数 _ftol を呼び出しません。
/QIfist
解説
メモ : |
---|
/QIfist は x86 に対応するコンパイラでのみ使用できます。このコンパイラ オプションは x64 や Itanium に対応するコンパイラでは使用できません。 |
_ftol 関数では、浮動小数点型から整数型への変換に加えて、浮動小数点制御ワードのビット 10 と 11 を設定して、FPU (Floating-Point Unit) の丸めモードをゼロ (切り捨て) にします。したがって、浮動小数点型から整数型への変換は、ANSI C 規格どおりに行われ、小数部分を破棄することが保証されます。/QIfist を使用すると、この保証が適用されません。丸めモードは、Intel 社のリファレンス マニュアルに示されたとおり、次の 4 とおりのうちのいずれかになります。
一番近い値に丸める (中間の場合は偶数)。
負の無限大に丸める。
正の無限大に丸める。
ゼロに丸める。
C のランタイム関数 _control87、_controlfp、__control87_2 を使用して、FPU の丸め動作を変更できます。FPU の既定の丸めモードでは、一番近い値に丸められます。/QIfist を使用すると、アプリケーションのパフォーマンスが向上しますが、それにはリスクが伴います。稼動環境で /QIfist を使ってビルドしたコードを使用する場合は、その前に、丸めモードの影響を受けるコード部分を十分にテストする必要があります。
/arch (最小限の CPU アーキテクチャ) と /QIfist は、同じコンパイル単位では使用できません。
メモ : |
---|
ビットの丸め動作により、すべての計算の後で浮動小数点も丸められるため、/QIfist は既定で無効です。このため、C スタイルの丸め (つまりゼロに丸める) のフラグを設定すると、浮動小数点の計算が異なる場合があります。浮動小数点数の小数部分の切り捨てについて予想される動作にコードが依存する場合は、/QIfist を使用しないでください。不明な場合は、/QIfist を使用しないでください。 |
Visual C++ 2005 では、/QIfist は使用されなくなりました。浮動小数点型から整数型への変換処理の速度が飛躍的に向上しました。詳細については、「Visual C++ 2005 で使用を推奨されていないコンパイラ オプション」を参照してください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダをクリックします。
[コマンド ライン] プロパティ ページをクリックします。
[追加のオプション]ボックスにコンパイラ オプションを入力します。
このコンパイラ オプションをコードから設定するには
- AdditionalOptions を参照してください。