Amalan terbaik Golang untuk menukar rentetan kepada nombor

WBOY
Lepaskan: 2024-01-16 10:39:18
asal
489 orang telah melayarinya

Amalan terbaik Golang untuk menukar rentetan kepada nombor

Amalan terbaik untuk menukar rentetan kepada nombor di Golang, contoh kod khusus diperlukan

Di Golang, penukaran rentetan kepada nombor ialah operasi biasa. Proses ini juga boleh dipanggil "menghuraikan" rentetan, kerana ia menghuraikan rentetan ke dalam jenis angka yang sepadan. Jenis berangka yang berbeza (seperti int, apungan, dll.) mempunyai peraturan penghuraian yang berbeza, jadi dalam praktiknya adalah perlu untuk memilih fungsi penghuraian yang betul.

Dalam artikel ini, kami akan memperkenalkan amalan terbaik untuk menukar rentetan kepada nombor di Golang, termasuk beberapa masalah dan penyelesaian biasa, serta contoh kod khusus. . seni bina (int32 atau int64). Contohnya: 42, -7, dsb.

uint: Mewakili jenis integer tidak bertanda, menduduki 4 bait atau 8 bait, bergantung pada seni bina sistem (uint32 atau uint64). Contohnya: 42, 3, dsb.

float: Mewakili jenis nombor terapung ketepatan tunggal dan dua ketepatan, masing-masing float32 dan float64. Contohnya: 3.14 atau -0.1.

    kompleks: mewakili jenis jamak, termasuk kompleks64 dan kompleks128. Contohnya: 3+2i atau -1.2-0.8i.
  • 2 Masalah biasa dari rentetan ke nombor
  • Dalam penukaran rentetan kepada nombor, terdapat beberapa masalah biasa:
  • Format rentetan yang salah: Jika rentetan tidak memenuhi keperluan format jenis nombor, tidak akan ditukarkan. Contohnya, menukar rentetan "x42" kepada menaip int akan menyebabkan ralat sintaks tidak sah.

Limpahan: Jika nombor yang diwakili oleh rentetan melebihi julat yang boleh diwakili oleh jenis angka, limpahan berlaku. Contohnya, apabila menukar rentetan "18446744073709551616" kepada jenis uint64, limpahan akan berlaku kerana nilai maksimum uint64 ialah 18446744073709551615.

Kehilangan ketepatan: Apabila menukar rentetan titik terapung kepada jenis integer, ia akan menyebabkan kehilangan ketepatan. Sebagai contoh, apabila menukar rentetan "3.14" kepada menaip int, anda akan mendapat 3 bukannya 4.

    Pengendalian tanda negatif: Jika rentetan mewakili nombor negatif, tanda negatif perlu dihuraikan dengan betul.
  • Untuk masalah di atas, kita perlu memilih penyelesaian yang betul untuk memastikan penukaran yang betul.
  • 3. Penyelesaian
  • Untuk masalah di atas, kami mengesyorkan penyelesaian berikut:

Format rentetan yang salah: Apabila menggunakan siri Parse fungsi untuk menghuraikan rentetan, jika rentetan itu tidak sah, ralat dikembalikan (seperti strconv. Atoi dan fungsi strconv.ParseInt), kita boleh menangani ralat ini. Jika kami tidak pasti sama ada rentetan itu terbentuk dengan baik, kami boleh menggunakan fungsi seperti strconv.CanParseInt untuk menyemak.

Limpahan: Apabila parameter ketiga fungsi ParseInt atau ParseUint ialah 0, pangkalan akan ditentukan secara automatik berdasarkan awalan rentetan, jadi kita perlu memberi perhatian kepada pangkalan yang diwakili oleh rentetan. Jika kami tidak pasti tentang asas rentetan (seperti "0x42" atau "42"), kami boleh menggunakan strconv.ParseInt("42", 0, 0) untuk menghuraikan rentetan ke dalam int jenis lalai Go.

Kehilangan ketepatan: Apabila menukar rentetan titik terapung kepada jenis integer, kita boleh menggunakan math.Round() untuk melaksanakan operasi seperti pembundaran untuk memastikan nilai yang ditukar adalah betul. Operasi serupa juga diperlukan apabila kita menukar rentetan dengan bilangan digit selepas titik perpuluhan.

    Pengendalian tanda negatif: Untuk rentetan yang mengandungi tanda, kami boleh menggunakan versi bertandatangan bagi siri Parse fungsi (seperti fungsi strconv.ParseInt dan strconv.ParseFloat) untuk menghuraikan tanda negatif dengan betul.
  • 4. Contoh Kod
  • Contoh kod berikut menunjukkan cara menghuraikan rentetan kepada jenis nombor yang berbeza:
  • package main import ( "fmt" "math" "strconv" ) func main() { // 将字符串转换为int类型 if i, err := strconv.Atoi("42"); err == nil { fmt.Println(i) } // 解析包含负号的字符串为int类型 if i, err := strconv.ParseInt("-42", 10, 64); err == nil { fmt.Println(i) } // 将字符串转换为uint类型 if u, err := strconv.ParseUint("42", 10, 64); err == nil { fmt.Println(u) } // 将浮点数字符串转换为整数类型,并确保精度正确 if f, err := strconv.ParseFloat("3.14", 64); err == nil { fmt.Println(math.Round(f)) } // 将带符号的浮点数字符串转换为复数类型 if c, err := strconv.ParseComplex("-1.2-0.8i", 128); err == nil { fmt.Println(c) } }
    Salin selepas log masuk
  • Artikel ini memperkenalkan amalan terbaik untuk menukar rentetan kepada nombor di Golang, termasuk beberapa yang biasa Masalah dan penyelesaian, sebagai serta contoh kod tertentu. Dalam pengekodan sebenar, kita perlu memilih fungsi penghuraian dan parameter yang betul mengikut senario tertentu untuk memastikan ketepatan dan kebolehpercayaan penukaran.

Atas ialah kandungan terperinci Amalan terbaik Golang untuk menukar rentetan kepada nombor. 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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!