因为你试图取负数的平方根而不是有效的操作(不仅仅是在Go中,在数学中),所以它返回NaN,它是Not A Number的首字母缩写.
b := 3 a := 4 c := 2 b2 := float64(b*b) // sets b2 == 9 ac := float64(4)*float64(a)*float64(c) // ac == 32 q := math.Sqrt(b2-ac) // Sqrt(9-32) == Sqrt(-23) == NaN fmt.Print(q) q = math.Sqrt(math.Abs(b2-ac)) // suggested in comments does Sqrt(23) == ~4.79 // perhaps the outcome you're looking for.
编辑:请不要在数学位上争论语义.如果你想讨论负数的平方根,那就不是这个地方了.一般来说,不可能取负数的平方根.
因为你试图取负数的平方根而不是有效的操作(不仅仅是在Go中,在数学中),所以它返回NaN,它是Not A Number的首字母缩写.
b := 3 a := 4 c := 2 b2 := float64(b*b) // sets b2 == 9 ac := float64(4)*float64(a)*float64(c) // ac == 32 q := math.Sqrt(b2-ac) // Sqrt(9-32) == Sqrt(-23) == NaN fmt.Print(q) q = math.Sqrt(math.Abs(b2-ac)) // suggested in comments does Sqrt(23) == ~4.79 // perhaps the outcome you're looking for.
编辑:请不要在数学位上争论语义.如果你想讨论负数的平方根,那就不是这个地方了.一般来说,不可能取负数的平方根.