首頁 > 後端開發 > Golang > 主體

Go 中是否有一個標準型別可以進行「精確除法」?

WBOY
發布: 2024-02-13 22:15:11
轉載
397 人瀏覽過

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

Go 中是否有一個標準型別可以進行「精確除法」?這是一個常見的問題,讓我們來解答一下。在 Go 中,沒有一個標準類型可以進行“精確除法”,這是因為 Go 中的整數類型是固定精度的,無法表示無限精度的小數。然而,Go 提供了一種解決方案,即使用浮點數類型進行除法運算。浮點數類型在 Go 中包括 float32 和 float64,它們可以表示較大範圍的數字,但由於浮點數的特性,可能存在精度損失的問題。因此,如果需要進行精確除法,建議使用大數庫(如 math/big 套件)來處理。這樣可以確保在進行除法運算時,得到精確的結果。

問題內容

我想在go中做一些「精確除法」。有標準類型嗎?

例如,我想儲存值“1/3”和“2/3”並能夠將它們相加。

我可以這樣定義自己的類型:

type mytype struct {
    numerator   int
    denominator int
}
登入後複製

並定義如下函數:

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}
}
登入後複製

但可能有一種更優雅的方法來做到這一點,或者已經做到了這一點的「標準類型」。

解決方法

我不知道 big.Rat。這就是我所需要的!謝謝您的幫忙

以上是Go 中是否有一個標準型別可以進行「精確除法」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板