代码如下:
package main
import (
"fmt"
"unsafe"
)
func main() {
var f float64 = 1.0
fmt.Println(Float64bits(f))
}
func Float64bits(f float64) uint64 {
return *((*uint64)(unsafe.Pointer(&f)))
}
结果如下:
$ go run main.go
4607182418800017408
疑问:
为啥结果不是1,而是那么大的一个数字呢?
有疑问加站长微信联系(非本文作者)

强转是将float内存按照int方式读取,而浮点数怎么存内存的可以百度吧,我知道是这个问题,但没细究。
位模式
之所以叫浮点数,那肯定是因为小数点的位置是不一样的,1.0的内存布局就是 1.0000000000。。。,直接转为uint64当然是非常大的