golang语言中整形和浮点型的相互转换
Go语言中只有强制类型转换,没有隐式类型转换。下面我们一起和大家看看golang语言中整形和浮点型的相互转换。
golang整形和整形相互转换
package main
import "fmt"
func main() {
var a int8 = 20
var b int16 = 40
var c = int16(a) + b //要转换成相同类型才能运行
fmt.Printf("值:%v--类型%T", c, c) //值:60--类型int16
}
golang整形和浮点型相互转换
package main
import "fmt"
func main() {
var a float32 = 3.2
var b int16 = 6
var c = a + float32(b)
fmt.Printf("值:%v--类型%T", c, c) //值:9.2--类型float32
}
转换的时候建议从低位转换成高位,高位转换成低位的时候如果转换不成功就会溢出,和我们想的结果不一样。
package main
func main() {
var a int16 = 129
var b = int8(a) // 范围 -128到127
println("b=", b) //b= -127 //错误
}
比如计算直角三角形的斜边长时使用math包的Sqrt()函数,该函数接收的是float64类型的参数,而变量a和b都是int类型的,这个时候就需要将a和b强制类型转换为float64类型。
var a, b = 3, 4
var c int
// math.Sqrt()接收的参数是float64类型,需要强制转换
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(c)