NaN
之前阅读源码,发现golang
的可比性和map
里面都有NaN
的特判
以前写js
可知,NaN
与任何浮点型比较都是false
,包括它自己
// main.go
package main
import (
"fmt"
"math"
)
type TestFloat struct {
Float64 float64 `json:"float64"`
}
func main() {
mp := make(map[float64]int)
mp[math.NaN()] = 12
mp[math.NaN()] = 14
for i, v := range mp {
fmt.Printf("%f %d\n", i, v)
}
}
// ./main
NaN 12
NaN 14
获取
经过测试,类似strconv
、encoding/json
正常解析一个非正常float64
字符串到float64
,都是直接报错的,并没有出现NaN
,目前我只发现底下这一种可能会遇到的业务场景
var i flaot64 = 0.0
fmt.Printf("%s\n", i)