使用 float32 作为映射键返回意外结果
package main
import "fmt"
func main() {
result := make(map[float32]map[float32]float32)
var t1 float32 = 1586238540
var t2 float32 = 1586238600
result[t1] = map[float32]float32{1:1,2:2}
result[t2] = map[float32]float32{3:3,4:4}
fmt.Println(result[t1])
fmt.Println(result[t2])
}
Run Code Online (Sandbox Code Playgroud)
map[3:3 4:4]
map[3:3 4:4]
Run Code Online (Sandbox Code Playgroud)
去版本: go version go1.14 linux/amd64
更改result为map[float64]map[float32]float32和t1,t2相应地给出正确的结果。
这种奇怪行为的原因是什么?