在 Go 语言中可以将 float64 类型转换为 int 类型。需要注意的是,转换过程中会丢失小数部分,只保留整数部分。
示例代码
bash
package main
import (
"fmt"
)
func main() {
var f float64 = 123.456
var i int = int(f)
fmt.Printf("float64: %f, int: %d\n", f, i)
}
解释
1.定义一个 float64 类型的变量 f:
bash
var f float64 = 123.456
2.将 float64 转换为 int:
bash
var i int = int(f)
这行代码将 f 转换为 int 类型,并赋值给变量 i。转换时会舍弃小数部分,所以 i 的值将是 123。
3.打印结果:
bash
fmt.Printf("float64: %f, int: %d\n", f, i)
这行代码将输出:
bash
float64: 123.456000, int: 123
注意事项
舍弃小数部分:在转换过程中,小数部分会被舍弃。例如,123.456 会被转换为 123。
溢出风险:如果 float64 的值超出了 int 类型的范围,转换后的结果可能会导致溢出。
处理溢出
如果你需要处理可能的溢出情况,可以在转换前进行检查:
bash
package main
import (
"fmt"
"math"
)
func main() {
var f float64 = 1e20 // 一个非常大的浮点数
if f > float64(math.MaxInt64) || f < float64(math.MinInt64) {
fmt.Println("Value is out of int range")
} else {
var i int = int(f)
fmt.Printf("float64: %f, int: %d\n", f, i)
}
}
在这个示例中,首先检查 f 是否超出了 int 类型的范围。如果超出范围,则输出提示信息;否则才进行转换。