首頁 > 後端開發 > Golang > 如何在 Go 中準確地將 float64 轉換為 uint64?

如何在 Go 中準確地將 float64 轉換為 uint64?

DDD
發布: 2024-12-20 00:12:27
原創
129 人瀏覽過

How to Accurately Convert a float64 to a uint64 in Go?

如何正確地將Float64 數字轉換為UInt64

考慮以下Go 代碼:

package main

func main() {
    var n float64 = 6161047830682206209
    println(uint64(n))
}
登入後複製

理解問題

由於浮點數的精度限製而產生差異使用 IEEE 754 標準表示。在 IEEE 754 中,分配了 53 位元用於儲存 64 位元浮點數(Go 中的 float64)中的數字。對於給定的常數,可以表示的位數小於常數本身的位數。

因此,常數不能精確地儲存在 float64 變數中,並且某些數字被四捨五入,丟失的。這可以透過列印原始的n 個float64 數字來確認:

fmt.Printf("%f\n", n)
fmt.Printf("%d\n", uint64(n))
登入後複製

正確轉換

要將float64 數字正確轉換為uint64,建議使用Trunc 函數,建議使用Trunc 函數,截斷float64數字的小數部分並傳回整數部分:

package main

import "math"

func main() {
    var n float64 = 6161047830682206209
    println(uint64(math.Trunc(n)))
}
登入後複製

此方法可確保轉換整數值時不會損失任何精確度。

以上是如何在 Go 中準確地將 float64 轉換為 uint64?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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