1. Metode pembulatan pembulatan adalah metode perhitungan perkiraan yang sangat banyak digunakan, yang mencakup dua jenis: metode pembulatan aritmatika dan metode pembulatan bankir. Metode pembulatan aritmatika yang disebut adalah metode pembulatan dalam pengertian kami yang biasa. Aturannya adalah: ketika nilai bit yang ditinggalkan lebih besar dari atau sama dengan 5, bit ditarik saat bit ditarik; ketika nilai bit yang ditinggalkan kurang dari 5, bit ditarik secara langsung. Metode pembulatan bankir yang disebut pada dasarnya adalah metode pembulatan empat bulat enam menjadi lima dan menjaga ganda (juga dikenal sebagai pembulatan enam menjadi lima ganjil dan bahkan). Aturannya adalah: Ketika nilai bit yang ditinggalkan kurang dari 5, bit ditinggalkan secara langsung; ketika nilai bit yang ditinggalkan lebih besar dari atau sama dengan 6, bit dikembalikan ke depan saat bit ditinggalkan; Ketika nilai bit kiri ditinggalkan ketika sama dengan 5, jika nilai digit sebelumnya aneh, maka bit dijatuhkan saat bit dijatuhkan. secara langsung. Singkatnya, hasil yang diperoleh dengan dua metode pembulatan tidak konsisten, sehingga mereka harus dibedakan sesuai dengan kebutuhan aktual saat menggunakannya. Kalau tidak, beberapa penyimpangan yang tidak dapat dijelaskan akan terjadi. 2. Fungsi pembulatan di Delphi terkenal. Namun, ini mengimplementasikan operasi pembulatan sesuai dengan aturan metode pembulatan bankir. Menggunakan fungsi pembulatan di Delphi selalu menggunakan putaran, tetapi kadang -kadang saya menemukan bahwa jawaban yang diperoleh dengan menggunakannya akan berbeda dari yang kami harapkan. Sebagai contoh: i: = round (11.5) Hasil: i = 12i: = Round (10.5) Hasil: i = 10 ya, sesuai dengan harapan kita, fungsi kedua harus kembali 11, tetapi mengapa ini terjadi? Untuk xxx.5, bagian integer adalah angka ganjil, maka bundar akan dibulatkan ke bawah. Apakah itu bug Delphi? Prosesor ini menggunakan apa yang disebut metode pembulatan bankir, yaitu, ketika menerapkan fungsi bulat pada nilai menengah (seperti 5.5, 6.5), prosesor menentukan apakah pembulatan didasarkan pada sifat ganjil dan bahkan dari angka sebelum tersebut sebelum tersebut sebelum tersebut sebelum tersebut sebelum pada angka tersebut sebelum pada angka tersebut sebelum pada angka tersebut sebelum ganjil dan bahkan dari angka tersebut sebelum tersebut sebelum pada yang sebelum. Titik desimal, seperti 5,5 putaran hasilnya adalah 6, dan hasil putaran 6,5 juga 6, karena 6 adalah angka genap. Fungsi bundar sebenarnya menggunakan algoritma bankir untuk operasi, dan umumnya digunakan secara statistik untuk menggunakan algoritma ini, yang lebih ilmiah daripada metode pembulatan tradisional kita. Seseorang diselesaikan dengan cara ini, menambahkan nilai yang sangat kecil ke 10.5, dan kemudian memanggil fungsi bulat. akar penyebabnya. Fungsi lain ditemukan di Internet: Fungsi Doround (nilai: diperpanjang): Int64; = Default8087CW; Ini adalah nilai kata kontrol unit floating point (FPU) dalam pengaturan CPU. Gagasan dari program di atas sangat sederhana, yaitu untuk menghemat 8087cw terlebih dahulu, kemudian mengaturnya untuk mengumpulkan, sehingga ketika angka bahkan tidak bundar, dan akhirnya mengembalikan 8087CW. Faktanya, fungsi di atas dapat disederhanakan Oldcw: Default8087CW; satu solusi. Faktanya, Borland telah lama berpikir bahwa kami akan mengalami masalah seperti itu, dan berpikir bahwa kami perlu menyesuaikan mode pembulatan FPU, sehingga memberikan fungsi siap untuk kami gunakan. Di unit matematika, ada fungsi SetRoundMode. Di bawah ini adalah fungsi pembulatan yang dienkapsulasi: Function RoundEx (Nilai: Extended; RoundMode: TFPuroundingMode = RMUP): Int64; Var RM: TFPuroundingMode; SetRoundMode (rm); akhir; Contoh: i: = Roundex (11.5) Hasil: i = 12i: = Roundex (10.5) Hasil: I = 11 well, itu benar, apa yang akan terjadi jika saya mengaturnya ke wol bulat lain wol lainnya kain? Sebagai contoh: i: = Roundex (11.5, rmtruncate) Hasil: i = 11i: = Roundex (10.5, rmtruncate) Hasil: I = 10Roundex Fungsi telah diubah menjadi fungsi trunc dengan indah.