共用方式為


float_control

指定浮點行為的函式。

float_control( value,setting [push] | push | pop )

旗標

  • value,setting**[push]**
    指定浮點行為。 valuecan be precise or except. 如需詳細資訊,請參閱 /fp (指定浮點數行為)。 settingcan either be on or off.

    如果value是precise,設定preciseexcept 會被指定。 except 只能設定成onprecise 也設定成on

    如果選擇性push 語彙基元加入時,目前設定的value推入至內部編譯器堆疊。

  • push
    推入目前的float_control設定為內部編譯器堆疊上

  • pop
    移除float_control從內部編譯器堆疊的頂端設定並使之新float_control設定。

備註

您不能 [打開float_control precise何時關閉except上。 同樣地, precise無法關閉時fenv_access上。 若要從嚴格的模型可移至快速的模型,與float_control pragma,使用下列程式碼:

#pragma float_control(except, off)
#pragma fenv_access(off)
#pragma float_control(precise, off)
// The following line is needed on Itanium processors
#pragma fp_contract(on)

若要前往從快速模型嚴格的模型,與float_control pragma,使用下列程式碼:

#pragma float_control(precise, on)
#pragma fenv_access(on)
#pragma float_control(except, on)
// The following line is needed on Itanium processors.
#pragma fp_contract(off)

其他的浮點 pragma 包括:

範例

下列範例示範如何攔截溢位浮點例外狀況使用 pragma float_control。

// pragma_directive_float_control.cpp
// compile with: /EHa
#include <stdio.h>
#include <float.h>

double func( ) {
   return 1.1e75;
}

#pragma float_control (except,on)

int main( ) {
   float u[1];
   unsigned int currentControl;
   errno_t err;

   err = _controlfp_s(&currentControl, ~_EM_OVERFLOW, _MCW_EM);
   if (err != 0)
      printf_s("_controlfp_s failed!\n");

   try  {
      u[0] = func();
      printf_s ("Fail");   
      return(1);
   } 
   
   catch (...)  {
      printf_s ("Pass");
      return(0);
   }
}
  

請參閱

參考

Pragma 指示詞 」 和 「 __Pragma 關鍵字