Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah terdapat jenis standard dalam Go yang boleh melakukan "pembahagian tepat"?

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

WBOY
WBOYke hadapan
2024-02-13 22:15:11345semak imbas

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
}

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}
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam