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
nearbyint
gibirint
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
,floor
velround
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_DOWNWARD
güncelleştirildi. Windows sürüm 14393 FE_UPWARD = 0x0200
ve FE_DOWNWARD = 0x0100
sü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