


Bagaimanakah Saya Boleh Menukar float64 kepada uint64 dengan Selamat dalam Go and Preserve Precision?
Dec 17, 2024 pm 01:54 PMPenukaran Float64 kepada Uint64: Memastikan Ketepatan
Nombor titik terapung, diwakili oleh float64 dalam Go, simpan nilai dengan ketepatan berubah. Apabila menukar float64 kepada jenis integer seperti uint64, adalah penting untuk memahami potensi kehilangan ketepatan.
Piawaian IEEE 754 mentakrifkan ketepatan float64 sebagai 53 bit, yang mengehadkan bilangan digit yang boleh diwakili dengan tepat. Pemalar, bagaimanapun, boleh diwakili dengan ketepatan sewenang-wenangnya.
Pertimbangkan contoh berikut:
package main import "fmt" func main() { var n float64 = 6161047830682206209 fmt.Printf("%f\n", n) fmt.Printf("%d\n", uint64(n)) }
Outputnya ialah:
6161047830682206208.000000 6161047830682206208
Seperti yang kita lihat, nombor yang disimpan dalam n tidak betul-betul sama dengan pemalar 6161047830682206209, kerana terhad ketepatan apungan64. Apabila menukar nilai ini kepada uint64, bahagian pecahan dibuang, mengakibatkan kehilangan ketepatan.
Untuk memastikan ketepatan dalam penukaran, kami boleh menggunakan kaedah yang lebih selamat:
func main() { const n = 6161047830682206209 var u uint64 = uint64(n) fmt.Printf("%f\n", float64(u)) fmt.Printf("%d\n", u) }
Dalam contoh ini, kami secara langsung memberikan pemalar kepada pembolehubah uint64, memastikan bahawa nilai yang tepat dikekalkan. Penukaran seterusnya kepada float64 adalah tepat dan akan menghasilkan nilai asal.
Memahami had ketepatan titik terapung adalah penting apabila menukar antara jenis data yang berbeza. Dengan mempertimbangkan dengan teliti keperluan ketepatan, kami boleh memastikan bahawa proses penukaran tidak memperkenalkan sebarang kehilangan data yang tidak diingini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar float64 kepada uint64 dengan Selamat dalam Go and Preserve Precision?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?

Bagaimana saya menulis objek dan stub untuk ujian di GO?

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?

Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya?

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?
