Bagikan melalui


fegetround, fesetround

Mendapatkan atau mengatur mode pembulatan titik mengambang saat ini.

Sintaks

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

Parameter

round_mode
Mode pembulatan untuk diatur, sebagai salah satu makro pembulatan floating-point. Jika nilai tidak sama dengan salah satu makro pembulatan floating-point, mode pembulatan tidak diubah.

Nilai hasil

Setelah berhasil, fegetround mengembalikan mode pembulatan sebagai salah satu nilai makro pembulatan titik mengambang. Ini mengembalikan nilai negatif jika mode pembulatan saat ini tidak dapat ditentukan.

Pada keberhasilan, fesetround mengembalikan 0. Jika tidak, nilai bukan nol dikembalikan.

Keterangan

Operasi floating-point dapat menggunakan salah satu dari beberapa mode pembulatan. Mode-mode ini mengontrol arah mana hasil operasi floating-point dibulatkan ke arah ketika hasil disimpan. Berikut adalah nama dan perilaku makro pembulatan floating-point yang ditentukan dalam <fenv.h>:

Makro Deskripsi
FE_DOWNWARD Bulat menuju tak terbatas negatif.
FE_TONEAREST Bulatkan ke arah terdekat.
FE_TOWARDZERO Bulat menuju nol.
FE_UPWARD Bulat menuju tak terbatas positif.

Perilaku FE_TONEAREST default adalah membulatkan hasil di tengah jalan antara nilai yang dapat diwakili menuju nilai terdekat dengan bit yang bahkan (0) paling tidak signifikan.

Mode pembulatan saat ini memengaruhi operasi ini:

  • Konversi string.
  • Hasil operator aritmatika floating-point di luar ekspresi konstanta.
  • Fungsi pembulatan pustaka, seperti rint dan nearbyint.
  • Mengembalikan nilai dari fungsi matematika pustaka standar.

Mode pembulatan saat ini tidak memengaruhi operasi ini:

  • Fungsi truncpustaka , ceil, floor, dan lround .
  • Floating-point ke integer implisit cast dan konversi, yang selalu membulatkan ke nol.
  • Hasil operator aritmetika floating-point dalam ekspresi konstanta, yang selalu membulatkan ke nilai terdekat.

Untuk menggunakan fungsi-fungsi ini, Anda harus menonaktifkan pengoptimalan floating-point yang dapat mencegah akses dengan menggunakan arahan #pragma fenv_access(on) sebelum panggilan. Untuk informasi selengkapnya, lihat fenv_access .

Penting

Sebelum Windows 10 versi 14393, fenv.h ditentukan FE_UPWARD = 0x0100 dan FE_DOWNWARD = 0x0200. Di Windows versi 14393, header ini diperbarui untuk mengatasi bug di mana beberapa API akan menafsirkan FE_UPWARD sebagai FE_DOWNWARD, dan sebaliknya. Mulai windows versi 14393, FE_UPWARD = 0x0200 dan FE_DOWNWARD = 0x0100, mengembalikan nilai sebelumnya. Jika Anda mengkompilasi aplikasi terhadap versi Windows SDK lama (masalah ini bergantung pada versi SDK, bukan versi OS atau versi VS), Anda mungkin mengalami masalah ini. Perbarui aplikasi Anda untuk menargetkan Windows SDK terbaru sehingga definisi FE_UPWARD dan FE_DOWNWARD konsisten dengan implementasi Windows. Jika Anda tidak dapat memperbarui aplikasi untuk menargetkan Windows SDK nanti, Anda dapat menentukan FE_UPWARD sebagai 0x0100 dan FE_DOWNWARD sebagai 0x0200 dalam kode Anda.

Persyaratan

Fungsi Header C Header C++
fegetround, fesetround <fenv.h> <cfenv>

Untuk informasi selengkapnya, lihat Kompatibilitas.

Lihat juga

Referensi fungsi alfabet
nearbyint, , nearbyintfnearbyintl
rint, , rintfrintl
lrint, , lrintflrintl, llrint, , llrintf,llrintl