C 庫 - fesetround() 函式



C 的fenvfesetround() 函式設定算術運算(浮點數)的舍入模式。在將此函式應用於實際應用時,需要根據浮點數進行特定計算,例如銀行/金融軟體始終將值舍入為零(利息計算)。

語法

以下是 fesetround() 函式的 C 庫語法。

int fesetround(int round);

引數

此函式僅接受一個引數,該引數為整數。以下是確定所需值(舍入)的引數列表:

  • FE_TONEAREST:此引數定義舍入到最接近的,即零。

  • FE_DOWNWARD:此引數定義將值舍入到負無窮大。

  • FE_UPWARD:此引數定義將值舍入到正無窮大。

  • FE_TOWARDZERO:此引數定義將值舍入到零。

返回值

  • 如果成功,此函式返回一個整數值(零)。如果引數不是受支援的舍入模式,則返回非零值。

示例 1

以下是一個基本的 C 庫程式,將引數 FE_TONEAREST 設定為 fesetround() 函式以檢視其演示。

#include <stdio.h>
#include <fenv.h>
#include <math.h>
int main() {
   double value = 9.5;
   double results[4];
   
   // Set rounding modes and perform calculations
   fesetround(FE_TONEAREST);
   results[0] = nearbyint(value);
   
   fesetround(FE_DOWNWARD);
   results[1] = nearbyint(value);
   
   fesetround(FE_UPWARD);
   results[2] = nearbyint(value);
   
   fesetround(FE_TOWARDZERO);
   results[3] = nearbyint(value);
   
   // Print results
   printf("Rounding FE_TONEAREST: %f\n", results[0]);
   printf("Rounding FE_DOWNWARD: %f\n", results[1]);
   printf("Rounding FE_UPWARD: %f\n", results[2]);
   printf("Rounding FE_TOWARDZERO: %f\n", results[3]);
   
   return 0;
}

輸出

以上程式碼產生以下結果:

Rounding mode set to FE_TONEAREST successfully.

示例 2

下面的程式演示了每個引數,這些引數將舍入模式的值與單個計算進行比較。

#include <stdio.h>
#include <fenv.h>
#include <math.h>
int main() {
   double value = 9.5;
   double results[4];
   
   // Set rounding modes and perform calculations
   fesetround(FE_TONEAREST);
   results[0] = nearbyint(value);
   
   fesetround(FE_DOWNWARD);
   results[1] = nearbyint(value);
   
   fesetround(FE_UPWARD);
   results[2] = nearbyint(value);
   
   fesetround(FE_TOWARDZERO);
   results[3] = nearbyint(value);
   
   // Print results
   printf("Rounding FE_TONEAREST: %f\n", results[0]);
   printf("Rounding FE_DOWNWARD: %f\n", results[1]);
   printf("Rounding FE_UPWARD: %f\n", results[2]);
   printf("Rounding FE_TOWARDZERO: %f\n", results[3]);
   
   return 0;
}

輸出

執行上述程式碼後,我們將獲得以下結果:

Rounding FE_TONEAREST: 10.000000
Rounding FE_DOWNWARD: 9.000000
Rounding FE_UPWARD: 10.000000
Rounding FE_TOWARDZERO: 9.000000

示例 3

在此程式中,我們設定舍入模式(浮點數)以執行除法任務。

#include <stdio.h>
#include <fenv.h>

int main() {
   // Set rounding mode to upward
   fesetround(FE_UPWARD);
   
   // Perform a division
   double result = 10.0 / 3.0;
   printf("Result with FE_UPWARD: %f\n", result);
   
   return 0;
}

輸出

執行上述程式碼後,我們將獲得以下結果:

Result with FE_UPWARD: 3.333334
c_library_fenv_h.htm
廣告

© . All rights reserved.