Go语言float64转int64出现类型转换报错的修正方法咨询
解决Go中float64转int64的报错问题
嘿,我来帮你搞定这个问题!首先有点奇怪的是,你贴的代码本身其实是可以正常编译运行的——Go语言允许直接将float64类型的值转换为int64,只是这种转换会直接截断小数部分,比如int64(1.9)会得到1。
那你遇到的Cannot convert expression of type 'float64' to type 'int64'错误,大概率是这几个原因之一:
- 是不是拼写错了类型名?Go是大小写敏感的,比如写成
Int64(大写I)就会报错,必须是小写的int64 - 是不是在常量定义里做的转换?比如
const num = int64(1.9),这种情况会报错,因为Go不允许将非整数常量直接转换为整数类型 - 可能是你的IDE给出的误报,试着直接用
go run命令运行代码看看实际结果
如果你的需求不只是截断小数,而是需要四舍五入、向上/向下取整,那推荐使用math包的工具函数,示例代码如下:
package main import ( "fmt" "math" ) func main() { // 直接截断(和int64()转换效果一致) fmt.Println(int64(1.9)) // 输出:1 // 四舍五入转换 fmt.Println(int64(math.Round(1.9))) // 输出:2 // 向上取整 fmt.Println(int64(math.Ceil(1.9))) // 输出:2 // 向下取整 fmt.Println(int64(math.Floor(1.9))) // 输出:1 }
另外要注意:使用math包的函数时,要确保你的浮点数数值在int64的范围内(-9223372036854775808 到 9223372036854775807),否则会出现溢出问题哦。
内容的提问来源于stack exchange,提问作者william007
相关产品推荐
相关产品推荐

