Adakah terdapat jenis standard dalam Go yang boleh melakukan 'pembahagian tepat'?

WBOY
Lepaskan: 2024-02-13 22:15:11
ke hadapan
401 orang telah melayarinya

Go 中是否有一个标准类型可以进行“精确除法”?

Adakah terdapat jenis standard dalam Go yang boleh melakukan "pembahagian tepat"? Ini soalan biasa, jom jawab. Dalam Go, tiada jenis standard yang boleh melakukan "pembahagian tepat" kerana jenis integer dalam Go ialah ketepatan tetap dan tidak boleh mewakili perpuluhan ketepatan tak terhingga. Walau bagaimanapun, Go menyediakan penyelesaian dengan menggunakan jenis titik terapung untuk operasi pembahagian. Jenis nombor titik terapung dalam Go termasuk float32 dan float64, yang boleh mewakili julat nombor yang lebih besar, tetapi disebabkan ciri nombor titik terapung, mungkin terdapat kehilangan ketepatan. Oleh itu, jika pembahagian yang tepat diperlukan, adalah disyorkan untuk menggunakan perpustakaan nombor yang besar (seperti matematik/pakej besar) untuk mengendalikannya. Ini memastikan keputusan yang tepat semasa melakukan operasi pembahagian.

Kandungan soalan

Saya mahu melakukan beberapa "pembahagian yang tepat" dalam perjalanan. Adakah terdapat jenis standard?

Sebagai contoh, saya ingin menyimpan nilai "1/3" dan "2/3" dan boleh menambahkannya.

Saya boleh menentukan jenis saya sendiri seperti ini:

type mytype struct {
    numerator   int
    denominator int
}
Salin selepas log masuk

Dan takrifkan fungsi berikut:

func (a MyType) Plus(b MyType) MyType {
    d := a.Denominator * b.Denominator
    n := (a.Numerator * b.Denominator) + (b.Numerator * a.Denominator)

    return MyType{Numerator: n, Denominator: d}
}
Salin selepas log masuk

Tetapi mungkin terdapat cara yang lebih elegan untuk melakukan ini, atau "jenis standard" yang sudah melakukannya.

Penyelesaian

Saya tidak tahu big.Rat. Itu sahaja yang saya perlukan! Terima kasih atas bantuan anda

Atas ialah kandungan terperinci Adakah terdapat jenis standard dalam Go yang boleh melakukan 'pembahagian tepat'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan