Rumah > pembangunan bahagian belakang > Golang > float32 vs. float64 Go: Berapa Banyak Ketepatan Yang Anda Perlukan?

float32 vs. float64 Go: Berapa Banyak Ketepatan Yang Anda Perlukan?

Barbara Streisand
Lepaskan: 2024-12-08 10:52:12
asal
243 orang telah melayarinya

Go's float32 vs. float64: How Much Precision Do You Really Need?

Ketepatan Nombor Titik Terapung dalam Go: float32 vs. float64

Dalam Go, nombor titik terapung diwakili menggunakan IEEE 754 format binari dalam asas 2. Ketepatan nombor titik terapung merujuk kepada bilangan bit yang digunakan untuk mewakilinya. mantissa, yang menentukan ketepatan nombor. Go menyediakan dua jenis mata terapung biasa: float32 dan float64.

Perbezaan antara jenis ini terletak pada ketepatannya. Walaupun float32 mempunyai mantissa 23-bit, float64 mempunyai mantissa 52-bit. Ketepatan yang lebih tinggi ini membolehkan float64 mewakili julat nilai yang lebih luas dan dengan ketepatan yang lebih tinggi berbanding float32.

Untuk menggambarkan ini, mari kita pertimbangkan contoh yang disediakan:

func main() {
    a := float64(0.2) // Initializing a float64 variable
    a += 0.1
    a -= 0.3
    var i int
    for i = 0; a < 1.0; i++ {
        a += a
    }
    fmt.Printf("After %d iterations, a = %e\n", i, a)
}
Salin selepas log masuk

Program ini menunjukkan pengumpulan ralat titik terapung apabila melakukan operasi berulang pada nilai. Dalam kes ini, pembolehubah 'a' dimulakan dengan nilai 0.2, dan kemudian operasi tambah dan tolak dilakukan dengan 0.1 dan 0.3, masing-masing. Ini diulang sehingga 'a' menjadi lebih besar daripada atau sama dengan 1.0.

Apabila anda menjalankan program ini dengan float32 invece di float64, ia memasuki gelung tak terhingga. Ini kerana perwakilan binari 0.1 dalam float32 berbeza sedikit daripada nilai perpuluhan sebenar, mengakibatkan ralat pembundaran. Akibatnya, nilai 'a' tidak terkumpul dengan tepat dan gelung berterusan selama-lamanya.

Sebaliknya, float64 mempunyai ketepatan yang lebih tinggi dan boleh mewakili nilai dengan lebih tepat. Oleh itu, atur cara yang sama menggunakan float64 akhirnya menamatkan gelung apabila 'a' mencapai 1.000000e 00.

Untuk lebih memahami perbezaan dalam ketepatan, anda boleh menggunakan matematik.Float32bits dan math.Float64bits berfungsi untuk menukar terapung -titik nilai kepada perwakilan binari mereka. Ini membolehkan anda memeriksa pengedaran bit dan mengenal pasti sumber perbezaan ketepatan antara float32 dan float64.

Atas ialah kandungan terperinci float32 vs. float64 Go: Berapa Banyak Ketepatan Yang Anda Perlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan