为什么Go中的以下不平等?这是一个错误,还是设计?如果是设计,为什么会发生这种情况,这种行为是否记录在任何地方?
https://play.golang.org/p/itEV9zwV2a
package main
import (
"fmt"
)
func main() {
x := 10.1
fmt.Println("x == 10.1: ", x == 10.1)
fmt.Println("x*3.0 == 10.1*3.0:", x*3.0 == 10.1*3.0)
fmt.Println("x*3.0: ", x*3.0)
fmt.Println("10.1*3.0: ", 10.1*3.0)
}
Run Code Online (Sandbox Code Playgroud)
生产:
x == 10.1: true
x*3.0 == 10.1*3.0: false
x*3.0: 30.299999999999997
10.1*3.0: 30.3
Run Code Online (Sandbox Code Playgroud)
请注意,正在使用不同的语法执行相同的浮点数学运算.那么为什么结果会有所不同呢?我希望在例子中10.1*3.0等于.30.29999...x*3.0