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,你是对的,那就是我要找的。