Go 如何将浮点转换为复数?

Go 如何将浮点转换为复数?,go,type-conversion,complex-numbers,Go,Type Conversion,Complex Numbers,使用非常简单的代码: package main import ( "fmt" "math" "math/cmplx" ) func sqrt(x float64) string { if x < 0 { return fmt.Sprint(cmplx.Sqrt(complex128(x))) } return fmt.Sprint(math.Sqrt(x)) } func main() { fmt.Println

使用非常简单的代码:

package main

import (
    "fmt"
    "math"
    "math/cmplx"
)

func sqrt(x float64) string {
    if x < 0 {
        return fmt.Sprint(cmplx.Sqrt(complex128(x)))
    }
    return fmt.Sprint(math.Sqrt(x))
}

func main() {
    fmt.Println(sqrt(2), sqrt(-4))
}
我尝试了不同的方法,但找不到如何将
float64
转换为
complex128
(只是为了能够对负数使用
cmplx.Sqrt()
函数)


处理此问题的正确方法是什么?

您实际上不希望将
float64
转换为
complex128
,而是希望在指定实际零件的位置构造一个
complex128

为此,您可以使用内置功能:

func complex(r, i FloatType) ComplexType
func sqrt(x float64) string {
    if x < 0 {
        return fmt.Sprint(cmplx.Sqrt(complex(x, 0)))
    }
    return fmt.Sprint(math.Sqrt(x))
}
将其用于
sqrt()
函数:

func complex(r, i FloatType) ComplexType
func sqrt(x float64) string {
    if x < 0 {
        return fmt.Sprint(cmplx.Sqrt(complex(x, 0)))
    }
    return fmt.Sprint(math.Sqrt(x))
}

您并不真正希望将
float64
转换为
complex128
,而是希望在指定实际零件的位置构造一个
complex128

为此,您可以使用内置功能:

func complex(r, i FloatType) ComplexType
func sqrt(x float64) string {
    if x < 0 {
        return fmt.Sprint(cmplx.Sqrt(complex(x, 0)))
    }
    return fmt.Sprint(math.Sqrt(x))
}
将其用于
sqrt()
函数:

func complex(r, i FloatType) ComplexType
func sqrt(x float64) string {
    if x < 0 {
        return fmt.Sprint(cmplx.Sqrt(complex(x, 0)))
    }
    return fmt.Sprint(math.Sqrt(x))
}

Thx,你是对的,那就是我要找的。Thx,你是对的,那就是我要找的。