2-7 Go --- 类型转换

2021-07-11  本文已影响0人  捌千里路雲和月

package main

import "fmt"

func main() {
    n1 := 10      // n1 int 类型
    f1 := 1.99    // f1 float 浮点型
    fmt.Printf("n1:%T\n", n1)      // Printf(%T) 查看变量的值类型
    fmt.Printf("f1:%T", f1)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
n1:int      // n1 int 整数型
f1:float64    // f1 float 浮点型

------------------------------------ 分割线 ----------------------------------
// 接上面不转换类型的基础上,ni、f1 参与运算会报错。
package main

import "fmt"

func main() {
    n1 := 10
    f1 := 1.99
    fmt.Println(n1 + f1)      // int 类型 n1 和 float 浮点型 f1 相加

}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
# command-line-arguments
.\main.go:8:17: invalid operation: n1 + f1 (mismatched types int and float64)      
// 系统提示:int和 float64类型不匹配
package main

import "fmt"

func main() {
    n1 := 10
    f1 := 1.99
    fmt.Println(float64(n1) + f1)   // float64(int),把 int 类型强转为 float64
                               // 此时,n1 和 f1 一样都是 float64 可以参与运算。

}

//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
11.99     // 10+1.99=11.99,没问题。
package main 

import "fmt"

func main() {
    n1 := 10
    f1 := 1.99
    fmt.Println(n1 + int(f1))    // int(float64),把 float64类型强转为 int
                               // 此时,n1 和 f1 一样都是 int 可以参与运算。

}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
11    // 10+1.99=11.99,但出来的结果是11。
      //这是因为 float 浮点数转换为 int 整形会出现精度丢失现象,
      //只取整数位,丢弃小数位。所有,11.99 只取整数位 11 。
上一篇 下一篇

猜你喜欢

热点阅读