golang语言中整形和浮点型的相互转换

发布于 1 年前 作者 phonegap100 231 次浏览 来自 分享

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)
回到顶部