float
, adalah titik mengambang C ++. FFloat32
adalah struktur yang mewakili float serta (melalui penyatuan) bitfields yang terurai untuk tanda float itu, mantissa dan bagian eksponen.
Anda umumnya tidak boleh menggunakan FFloat32
kecuali ketika:
- Anda menggunakan beberapa API yang mengharapkan
FFloat32
(ini sangat jarang) atau
- Anda perlu melakukan semacam peretasan bit tingkat rendah dengan nilai floating point (juga cukup langka hari ini)
Ini bukan berarti bahwa FFloat32
adalah buruk , per se, itu hanya bahwa itu tidak benar-benar menawarkan apa pun yang Anda akan perlu untuk tujuan umum floating penggunaan titik.
Ini lebih jarang daripada yang biasa float
, yang memiliki beberapa dampak keterbacaan kecil (yang lain mungkin tidak tahu langsung untuk apa sekilas pandang). Ini juga tidak secara implisit dikonversi ke float
sehingga Anda akan banyak mengetik something.FloatValue
, yang juga bukan masalah besar, tetapi bisa membosankan.
Akhirnya, penggunaan serikat pekerja dan bitfields adalah non-portabel, dan implementasi-didefinisikan (lihat di bawah). Ini bukan masalah Anda , itu adalah tugas Epic untuk memastikan tipe terstruktur sehingga dapat digunakan untuk semua implementasi yang didukung, tetapi ini merupakan sumber bug potensial jika mereka gagal menangkap masalah dengan implementasi tipe ketika kompiler baru versi dirilis atau ditambahkan ke daftar kompiler yang didukung.
Jadi, kecuali Anda memiliki kebutuhan untuk bermain dengan bit individu dalam representasi floating point, Anda mungkin harus menghindari FFloat32
(sepupunya FFloat16
,, mungkin memiliki utilitas sedikit lebih karena tidak ada standar 16-bit C ++ tipe floating point).
Dulu umum untuk memanipulasi pelampung melalui representasi integer dari komponen mereka untuk " kecepatan ." Komputer modern menyingkirkan banyak kebutuhan itu untuk banyak platform, dan berbagai jenis teknik penghukuman yang dapat digunakan untuk melakukan hal semacam ini sebenarnya dapat merusak kinerja atau kebenaran dalam peristiwa apa pun.
Seharusnya memberitahu bahwa pencarian repositori Unit's GitHub mengungkapkan sangat sedikit kegunaan dari FFloat32
tipe tersebut. Semuanya dalam definisi FFloat32
itu sendiri atau dalam definisi FFloat16
.
Secara khusus, FFloat32
melakukan dua hal yang disebut oleh standar C ++. Itu:
- memungkinkan Anda untuk bertindak seolah-olah lebih dari satu anggota serikat aktif pada satu waktu; Anda diharapkan menulis kepada anggota floating point dan membaca dari salah satu anggota integer (9.5.1, [class.union])
- mengharapkan alokasi bitfield dalam serikat untuk mencocokkan dengan alokasi bit dari nilai titik mengambang IEEE; namun demikian, alokasi dan penyelarasan anggota bitfield dalam tipe kelas ditentukan oleh implementasi (9.6.1, [class.bit])
FFloat32
.