Aracılığıyla paylaş


fegetround, fesetround

Geçerli kayan nokta yuvarlama modunu alır veya ayarlar.

Sözdizimi

int fegetround(void);
int fesetround(int round_mode);

Parametreler

round_mode
Kayan nokta yuvarlama makrolarından biri olarak ayarlanacağı yuvarlama modu. Değer kayan nokta yuvarlama makrolarından birine eşit değilse yuvarlama modu değiştirilmez.

Dönüş değeri

Başarılı olduğunda, fegetround kayan nokta yuvarlama makro değerlerinden biri olarak yuvarlama modunu döndürür. Geçerli yuvarlama modu belirlenemiyorsa negatif bir değer döndürür.

Başarılı olduğunda fesetround 0 döndürür. Aksi takdirde sıfır olmayan bir değer döndürülür.

Açıklamalar

Kayan nokta işlemleri çeşitli yuvarlama modlarından birini kullanabilir. Bu modlar, kayan nokta işlemlerinin sonuçlarının, sonuçlar depolandığında hangi yöne yuvarlandığı denetler. Fenv.h> dosyasında tanımlanan <kayan nokta yuvarlama makrolarının adları ve davranışları şunlardır:

Makro Açıklama
FE_DOWNWARD Negatif sonsuzluğa doğru yuvarlak.
FE_TONEAREST En yakına doğru yuvarla.
FE_TOWARDZERO Sıfıra doğru yuvarla.
FE_UPWARD Pozitif sonsuzluğa doğru yuvarlak.

varsayılan davranışı FE_TONEAREST , temsil edilebilir değerler arasındaki sonuçları en yakın değere doğru çift (0) en az önemli bit ile yuvarlar.

Geçerli yuvarlama modu şu işlemleri etkiler:

  • Dize dönüştürmeleri.
  • Sabit ifadelerin dışındaki kayan nokta aritmetik işleçlerinin sonuçları.
  • ve nearbyintgibi rint kitaplık yuvarlama işlevleri.
  • Standart kitaplık matematik işlevlerinden değerler döndürür.

Geçerli yuvarlama modu şu işlemleri etkilemez:

  • trunc, ceil, floorve lround kitaplık işlevleri.
  • Kayan noktadan tamsayıya örtük dönüştürmeler ve her zaman sıfıra yuvarlanan dönüştürmeler.
  • Sabit ifadelerdeki kayan nokta aritmetik işleçlerinin sonuçları, her zaman en yakın değere yuvarlar.

Bu işlevleri kullanmak için, çağrıdan önce yönergesini kullanarak erişimi engelleyebilecek kayan #pragma fenv_access(on) nokta iyileştirmelerini kapatmanız gerekir. Daha fazla bilgi için bkz. fenv_access.

Önemli

Windows 10 sürüm 14393'e fenv.h kadar tanımlı FE_UPWARD = 0x0100 ve FE_DOWNWARD = 0x0200. Windows sürüm 14393'te bu üst bilgi, bazı API'lerin olarak yorumlandığı FE_UPWARD bir hatayı (veya tam tersini) giderecek şekilde FE_DOWNWARDgüncelleştirildi. Windows sürüm 14393 FE_UPWARD = 0x0200 ve FE_DOWNWARD = 0x0100sürümünden başlayarak önceki değerlerini tersine çevirme. Uygulamanızı eski bir Windows SDK sürümüne göre derlediyseniz (bu sorun işletim sistemi sürümüne veya VS sürümüne değil SDK sürümüne bağlıdır) bu sorunla karşılaşabilirsiniz. ve tanımlarının Windows uygulamasıyla tutarlı olması için uygulamanızı en son Windows SDK'sını FE_UPWARD FE_DOWNWARD hedefleyebilecek şekilde güncelleştirin. Uygulamanızı daha sonraki bir Windows SDK'sını hedefecek şekilde güncelleştiremiyorsanız, kodunuzda olduğu gibi 0x0100 ve FE_DOWNWARD olarak 0x0200 tanımlayabilirsinizFE_UPWARD.

Gereksinimler

İşlev C üst bilgisi C++ üst bilgisi
fegetround, fesetround <fenv.h> <cfenv>

Daha fazla bilgi için bkz . Uyumluluk.

Ayrıca bkz.

Alfabetik işlev başvurusu
nearbyint, nearbyintf, nearbyintl
rint, rintf, rintl
lrint, lrintf, lrintl, , llrint, llrintf, llrintl