Bildirim
int fesetround(int round); (C99)
Açıklama
Round parametresinde yer alan float değer yuvarlama yöntemini aktif yuvarlama yöntemi olarak ayarlar.
Parametreler
round: Float değer yuvarlama yöntemlerinden biridir.
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.