Bildirim
int fegetround(); (C99)
Açıklama
Geçerli yuvarlama yöntemine karşılık gelen float değer yuvarlama makrosunun değerini döndürür.
Parametreler
Yok.
Dönüş değeri
Fonksiyon başarılı bir şekilde çalışırsa 0, aksi takdirde sıfır olmayan bir değer geri döndürür.
Örnek
#include <stdio.h>
#include <math.h>
#include <fenv.h>
void Get_Rounding(void);
int main(void)
{
int curr_method;
double dd=7.5;
/* Aktif yuvarlama yöntemi */
Get_Rounding();
printf("Değişken değeri: %.2f, Yuvarlanmış değişken değeri: %.2f\n", dd, rint(dd));
/* Aktif yuvarlama yöntemini kaydetme */
curr_method = fegetround();
/* Geçici olarak aktif yuvarlama yöntemini değiştirme. */
fesetround(FE_DOWNWARD);
Get_Rounding();
printf("Değişken değeri: %.2f, Yuvarlanmış değişken değeri: %.2f\n", dd, rint(dd));
/* Ön tanımlı yuvarlama yöntemini yeniden yükleme. */
fesetround(curr_method);
Get_Rounding();
return 0;
}
void Get_Rounding(void)
{
char *csonuc;
switch (fegetround()) {
case FE_TONEAREST:
csonuc="FE_TONEAREST";
break;
case FE_DOWNWARD:
csonuc="FE_DOWNWARD";
break;
case FE_UPWARD:
csonuc="FE_UPWARD";
break;
case FE_TOWARDZERO:
csonuc="FE_TOWARDZERO";
break;
default:
csonuc="Bilinmiyor.";
};
printf("Aktif yuvarlama yöntemi: %s\n", csonuc);
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Aktif yuvarlama yöntemi: FE_TONEAREST Değişken değeri: 7.50, Yuvarlanmış değişken değeri: 8.00 Aktif yuvarlama yöntemi: FE_DOWNWARD Değişken değeri: 7.50, Yuvarlanmış değişken değeri: 7.00 Aktif yuvarlama yöntemi: FE_TONEAREST
Yukarıdaki program, bir double değişken değerini önce aktif yuvarlama yöntemine göre, aktif yuvarlama yöntemini fesetround() fonksiyonu ile FE_DOWNWARD değerine ayarladıktan sonra, yeni yönteme göre rint() fonksiyonu ile yuvarlayarak ekrana yazar.