为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
紫衣仙女 2021-10-18 14:11:24
使用非常简单的代码:package mainimport (    "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))}我收到以下错误消息:main.go:11: cannot convert x (type float64) to type complex128我尝试了不同的方法,但找不到如何将 a 转换float64为complex128(只是为了能够对cmplx.Sqrt()负数使用函数)。处理这个问题的正确方法是什么?
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

您并不是真的想将 a 转换为float64,complex128而是想构造一个complex128指定实部的值。


为此可以使用内置complex()函数:


func complex(r, i FloatType) ComplexType

使用它你的sqrt()功能:


func sqrt(x float64) string {

    if x < 0 {

        return fmt.Sprint(cmplx.Sqrt(complex(x, 0)))

    }

    return fmt.Sprint(math.Sqrt(x))

}

在Go Playground上试一试。


笔记:


您可以在float不使用复数的情况下计算负数的平方根:它将是一个复数值,其实部为0虚部math.Sqrt(-x)i(因此结果:)(0+math.Sqrt(-x)i):


func sqrt2(x float64) string {

    if x < 0 {

        return fmt.Sprintf("(0+%.15fi)", math.Sqrt(-x))

    }

    return fmt.Sprint(math.Sqrt(x))

}


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信