为什么浮子和整数=南?在去

lia*_*iam -3 go

package main

import (
    "fmt"
    "math"
)

func main() {
    // x= +- sqrtB-4ac/2a
    cal()
}

func cal() {
    b := 3
    a := 4
    c := 2
    b2 := float64(b*b)
    ac := float64(4)*float64(a)*float64(c)
    q := math.Sqrt(b2-ac)
    fmt.Print(q)
}
Run Code Online (Sandbox Code Playgroud)

这将输出NaN,但为什么.我正在尝试制作二次计算器.我想要的就是输出数字.

eva*_*nal 5

因为你试图取负数的平方根而不是有效的操作(不仅仅是在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.
Run Code Online (Sandbox Code Playgroud)

编辑:请不要在数学位上争论语义.如果你想讨论负数的平方根,那就不是这个地方了.一般来说,不可能取负数的平方根.